Java 在正则表达式中查找括号

Java 在正则表达式中查找括号,java,android,regex,parentheses,Java,Android,Regex,Parentheses,我写了这个模式: final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$"; 为了匹配表达式,如:n+2/6或(n-3)/4 当我使用括号时,没有匹配项。 我做错了什么 请注意,我使用方括号表示正则表达式,其中的字符顺序无关紧要 谢谢 将减号放在前面,使其不具有范围的含义 ^([-n0-9\\-\\+\\(\\)]+)/([0-9]+)$ 注意正则表达式的第4个字符 字符类中也有一些冗余。这是一种简化: ^([-n0

我写了这个模式:

final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";
为了匹配表达式,如:n+2/6或(n-3)/4

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

请注意,我使用方括号表示正则表达式,其中的字符顺序无关紧要


谢谢

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

^([-n0-9\\-\\+\\(\\)]+)/([0-9]+)$
注意正则表达式的第4个字符

字符类中也有一些冗余。这是一种简化:

^([-n0-9+\\()]+)/([0-9]+)$
我写了这个模式:

final String FRACTION_PATTERN = "^([n0-9\\-\\+\\(\\)]+)/([0-9]+)$";
final String FRACTION\u PATTERN=“^([n0-9\\-\\+\\\(\\\)]+/([0-9]+)$”

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

就停在那里


你用错工具了。无法使用正则表达式技术分析通用算术表达式


20世纪50年代就证明了这一点。你需要一个解析器。看看Dijkstra的,或者。

如果你使用
([n0-9+()-)怎么办
作为第一组?。请提供您的正则表达式必须处理的字符串。您使用的工具不正确。无法使用正则表达式技术解析常规算术表达式。您需要一个解析器。如果您希望支持带括号的表达式,则还需要支持嵌套括号,例如
((5+7)*4-7)/(3+2)
,regex无法处理。因此,按照@EJP的建议,使用表达式解析器,而不是regex匹配器。它在OP regex中没有范围的含义。您的regexp与OP相同,只是转义较少。@stribizhev当您将破折号作为类中的第一个字符时,它将匹配破折号并失去其对spe的含义指定一个范围。OP希望在第二个示例中按字面意思匹配破折号。
\\-
是一个转义连字符,它已经没有创建范围。@Stribizev不,它确实创建了一个范围。带反斜杠和反斜杠的范围。\\-\\我认为这不是一个答案。如果您想建议使用其他库,您应该在评论中这样做。