在正则表达式中查找括号

时间:2016-01-15 08:55:28

标签: java android regex parentheses

我写了这个模式:

final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";

为了匹配如下表达式:n + 2/6或(n-3)/ 4

当我使用括号时,没有匹配。 我做错了什么?

请注意,我使用方括号作为正则表达式,并且里面的字符顺序无关紧要。

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我写了这个模式:

     

final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";

     

为了匹配如下表达式:n + 2/6或(n-3)/ 4

停在那儿!

您正在使用错误的工具来完成工作。您无法使用正则表达式技术分析通用算术表达式。

这在20世纪50年代得到证实。你需要一个解析器。请查看Dijkstra的Shunting-yard algorithmrecursive descent expression parser

答案 1 :(得分:-1)

将减号放在前面,使其不具有范围的含义

^([-n0-9\\-\\+\\(\\)]+)/([0-9]+)$

注意正则表达式的第4个字符

角色类中也有一些冗余。这是一个简化:

^([-n0-9+\\()]+)/([0-9]+)$