如题,等式中有()+-/*^这7个符号,哪位大虾帮我写个正则判断一个等式是否合法.
解决方案 »
- jsp中的内置对象out.print方法和response.getWrite().print()有什么区别
- 一个java基础题,200分
- 奇怪
- JSP通过ODBC连接MSSQL的问题
- 弱问关于JAVA调用Web Service的一个问题
- 急!关于SSH的action servlet is not availabled的问题
- spring+xfire1.2 java.lang.NullPointerException不知咋整
- 问大家,我用DWR做了一个连动菜单,为什么在火狐浏览器里不好用????
- webwork2.2+spring+hibernate的问题!大家帮忙看看
- 小妹我有struts简单问题,近来拣分呀!
- Struts 1中如何将list传到Form中
- 急急急 java搜索引擎lucene
String math = "5+5*4+(2^2)";
String reg = "^(\\d+[\\+\\-\\*/\\^]|\\d+[\\+\\-\\*/\\^]\\(|\\d+\\)[\\+\\*\\-/\\^])+(\\d+\\)|\\d+)$";
System.out.println(math.matches(reg));
Java 中的正则表达式不支持嵌套结构!
i= 表达式
}catch{
表达式不合法!
}
这不是正则语言,不能表达成正则表达式。 即使使用反向引用,正则表达式也是办不到的。因为包含有任意层括号嵌套的语言不是正则语言,不能被DFA(确定有限状态自动机)识别。而正则表达式是一种“正则语言”,而某种语言是一个“正则语言”的一个必要条件是“能够被DFA识别”。而括号嵌套语法需要不确定的存储空间来存放识别过程中的状态,这超出了DFA的能力范围。从理论上讲,没有任何人有这个能力写出这样的正则表达式。 这种表达式文法上属于上下文无关文法,可以使用LR/LL语法分析器进行分析。javacc 是一种广泛使用的 java 语言实现的 LL 分析工具。可以使用 javacc 来分析。 如果只是简单地表达有限的语法,用不着使用 javacc 。只要借用堆栈,就可以很快地写出一个自己需要的语法解析器。
哦,学习了