Java 使用正则表达式查找+;或-
我在使用正则表达式时遇到问题 这就是我所拥有的:Java 使用正则表达式查找+;或-,java,regex,Java,Regex,我在使用正则表达式时遇到问题 这就是我所拥有的: String expr=“1+4+3-2” 匹配器m while(Pattern.matches("[+-].*", expr)) { (m = Pattern.compile("[+-](.*)").matcher(expr)).find(); expr = parseTerm(m.group(1)); System.out.println("+: " + expr) } 我试图在上面的字符串中找到“+”或“-”(或任
String expr=“1+4+3-2”
匹配器m代码>
while(Pattern.matches("[+-].*", expr))
{
(m = Pattern.compile("[+-](.*)").matcher(expr)).find();
expr = parseTerm(m.group(1));
System.out.println("+: " + expr)
}
我试图在上面的字符串中找到“+”或“-”(或任何其他带+'和-'的计算,如1+D[0]+D[5]
)。当我找到一个+或-,我想用运算的左边和右边的数字进行运算。所以1+4加起来就是5。然后5+3加起来等于8,最后8-2减下来等于6。由于某种原因,我当前的代码没有经过while循环,因此我无法添加或减去任何内容。我做错了什么?您必须只捕捉数字:
(m = Pattern.compile("[+-]([0-9]*)").matcher(expr)).find();
没有任何符号!(*
)。因为在这种情况下,你抓住了整个表达式
如果令牌中可能有其他符号(但不是+或=),
您可以这样做:
(m = Pattern.compile("[+-]([^+-]*)").matcher(expr)).find();
参考资料:
+
是正则表达式中的保留标记。使用“[\\+-](.*)”
@shivamkara:不,不在sybol类[]
中。您的表达式是否只包含+
或-
?我是说*
,/
,或者括号
?这里必须考虑前置规则。是的,我在另一个函数中处理*和/但该函数有一个类似于此函数的问题。它不会进入while loop.regex来解析表达式…伪造它..我实际上没有提到这一点,但它并不总是后跟+/-数字。例如,我可以有1+D[0]+5@user1831442.. 正则表达式不够聪明,无法理解表达式的含义。它不知道D[0]
应该是什么。您可能使用了错误的工具。但我不需要它来确定D[0]
是什么。我所需要做的就是进入while循环,它不会进入。你改变的是m的赋值,而不是while循环的条件,以便我的程序进入它。我也尝试过将while循环条件更改为“[+-]([^+-]*)”
,但仍然不起作用;我没有重写整个代码
while (Pattern.compile("[\\+-]").matcher(expr).find())
{
....
}