日期:2014-05-20  浏览次数:20734 次

如何检测1(2&3)是不合法的,而 1|(2&3) 是合法的。
表达式还可以再长一点的

比如:

1|(2&7)&5是合法的。当然1|2&7&5也合法。

但1|&2&7)&5不合法,不知说清楚了没有,呵呵!!!

------解决方案--------------------
正则?
------解决方案--------------------
正则表达式解决
------解决方案--------------------
String expr = "(3&2|3|4)&4|(4&2&3)&3|(2|3&3)|3&2 ";
String pattern = "^(\\d+[|&])*((((\\((\\d+[|&])+\\d+\\)[|&])*(\\d+[|&])*)*\\d+)|([|&]?\\((\\d+[|&])+\\d+\\)))*$ ";
System.out.println(expr.matches(pattern));

不支持嵌套括号。头好晕乎啊 @_@


------解决方案--------------------
没看出来规律