我写了这个模式:
final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";
为了匹配如下表达式:n + 2/6或(n-3)/ 4
当我使用括号时,没有匹配。 我做错了什么?
请注意,我使用方括号作为正则表达式,并且里面的字符顺序无关紧要。
谢谢!
答案 0 :(得分:1)
我写了这个模式:
final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";
为了匹配如下表达式:n + 2/6或(n-3)/ 4
停在那儿!
您正在使用错误的工具来完成工作。您无法使用正则表达式技术分析通用算术表达式。
这在20世纪50年代得到证实。你需要一个解析器。请查看Dijkstra的Shunting-yard algorithm或recursive descent expression parser。
答案 1 :(得分:-1)
将减号放在前面,使其不具有范围的含义
^([-n0-9\\-\\+\\(\\)]+)/([0-9]+)$
注意正则表达式的第4个字符
角色类中也有一些冗余。这是一个简化:
^([-n0-9+\\()]+)/([0-9]+)$