标签: java regex
我一直试图在程序中捕获指定的变量,这也会评估简单数学表达式的有效性。
假设声明的变量是a和bc。
我想出了类似的东西
^[+-][(a)(bc)]+[(a)(bc)]*+([+-x/][(a)(bc)]+[(a)(bc)]*)*$
我的目的是验证像
+a-bc-a -bc+a-a
但似乎这个表达式也为
-b+a+ab
我不希望因为b未指定为变量。真的很感激任何帮助。
答案 0 :(得分:2)
^[+-](?:(a)|(bc))+(?:(a)|(bc))*+(?:[+-x\/](?:(a)|(bc))+(?:(a)|(bc))*)*$
[]是一个字符类,匹配单个字符,而不是交替。你的正则表达式也遭受了灾难性的回溯。 See demo.
[]
您也可以将其缩小为
^[+-](?:a|bc)+(?:[+-x\/](?:a|bc)+)*$
See demo.