朋友给我一个DEMO...结果有点问题!麻烦达人帮我看看 String regex = "^"+ //匹配开头
"[-+]"+ //开头可以出现正负号
"([0-9]+($|[-+]))*"+ //可选数-符号-数-符号-……-数-符号或结尾
"("+
"("+
"(?<o>/()"+ //左括号,保存到o名字下
"[-+]?"+ //可选正负号
"+([0-9]+[\\-+])*"+ //可选数-符-数-符……
")+"+ //可以重复出现左括号
"[0-9]+"+ //左右括号之间最起码需要一个操作数
"("+
"(?<-o>\\))"+ //右括号,匹配的同时去掉一个左括号
"([-+*/][0-9]+)*" + //可选符-数-符-数……
")+"+ //可以重复出现右括号,仅当还有左括号剩余
"($|[-+*/])"+ //要么结尾,要么在下一个左括号出现之前出现一个运算符
")*"+ //重复出现左括号
"(?(o)(?!))"+ //如果还有左括号剩余就不匹配任何东西
"(?<=[0-9)])"+ //检查结尾前是否数字或右括号
"$" //匹配结尾
;
Pattern pattern=Pattern.compile(regex);
Matcher matcher=null;
String[] tests = new String[] {
"1",
"1+23",
"1+23*456",
"1*(23+456)",
"(3)",
"((67+8)*9+10)/11",
"12+(13*)",
"()",
"((3)",
"(3))",
"+3",
"5*(4+3/(-2))",
"(5*(4+3/(-2))",
"5*(4+3/(-2)))",
"+3*",
"+(4)+(-5)",
"+(4)(5)",
};
运行后报如下错误:
java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 55
^[-+]?([0-9]+($|[-+*/]))*(((?<o>/()[-+]? ([0-9]+[-+*/])*)+[0-9]+((?<-o>/))([-+*/][0-9]+)*)+($|[-+*/]))*(?(o)(?!))(?<=[0-9)])$
^
"[-+]"+ //开头可以出现正负号
"([0-9]+($|[-+]))*"+ //可选数-符号-数-符号-……-数-符号或结尾
"("+
"("+
"(?<o>/()"+ //左括号,保存到o名字下
"[-+]?"+ //可选正负号
"+([0-9]+[\\-+])*"+ //可选数-符-数-符……
")+"+ //可以重复出现左括号
"[0-9]+"+ //左右括号之间最起码需要一个操作数
"("+
"(?<-o>\\))"+ //右括号,匹配的同时去掉一个左括号
"([-+*/][0-9]+)*" + //可选符-数-符-数……
")+"+ //可以重复出现右括号,仅当还有左括号剩余
"($|[-+*/])"+ //要么结尾,要么在下一个左括号出现之前出现一个运算符
")*"+ //重复出现左括号
"(?(o)(?!))"+ //如果还有左括号剩余就不匹配任何东西
"(?<=[0-9)])"+ //检查结尾前是否数字或右括号
"$" //匹配结尾
;
Pattern pattern=Pattern.compile(regex);
Matcher matcher=null;
String[] tests = new String[] {
"1",
"1+23",
"1+23*456",
"1*(23+456)",
"(3)",
"((67+8)*9+10)/11",
"12+(13*)",
"()",
"((3)",
"(3))",
"+3",
"5*(4+3/(-2))",
"(5*(4+3/(-2))",
"5*(4+3/(-2)))",
"+3*",
"+(4)+(-5)",
"+(4)(5)",
};
运行后报如下错误:
java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 55
^[-+]?([0-9]+($|[-+*/]))*(((?<o>/()[-+]? ([0-9]+[-+*/])*)+[0-9]+((?<-o>/))([-+*/][0-9]+)*)+($|[-+*/]))*(?(o)(?!))(?<=[0-9)])$
^
解决方案 »
- 关于session的问题
- jsp高手啊!急需
- SQL Server 2008连接java
- 如何写下载文件的语句
- 使用javabean无法写入数据库。
- 为什么我写的applet在本机可以很好的浏览,在别的机器上浏览不行,在IE的状态栏里显示class Myapplet not Found ?各位专家可否指点一下
- 这个东西到底该怎么用呀?
- 对于j2ee应用,很多都是基于web的,如果查询和计算都要花费很长时间,返回就超时了,怎么办
- logic:iterate再问
- ERROR ContextLoader:215 - Context initialization failed
- 关于hibernateTemplate的问题
- MyEclipse添加jar同名怎么办
楼主【dong2590】截止到2008-07-23 15:36:05的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:1 得分贴总数量:1 回帖的得分率:100%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
(?<-o>\)) 每匹配一个“)”将深度减 1
(?(o)(?!)) 确保在全部完成后的深度为 0这种结构是 .NET 的特性,Java 中不支持这种结构!