使用正则表达式查找+或 -

时间:2013-01-26 06:36:32

标签: java regex

我在使用正则表达式时遇到了麻烦。

这就是我所拥有的:

String expr = "1+4+3-2"
Matcher m;

while(Pattern.matches("[+-].*", expr))
{
    (m = Pattern.compile("[+-](.*)").matcher(expr)).find();
    expr = parseTerm(m.group(1));
    System.out.println("+: " + expr)
}

我正在尝试在上面的字符串中找到“+”或“ - ”(或使用+'和-s的任何其他计算,例如1+D[0]+D[5])。当我找到+或 - 时,我想用操作左侧和右侧的数字进行操作。因此1 + 4将添加到5。然后5 + 3将添加到8,最后8-2将减去最终为6.我的当前代码由于某种原因没有通过while循环,所以我'我无法添加或减去任何东西。我做错了什么?

2 个答案:

答案 0 :(得分:0)

你必须只捕捉数字:

 (m = Pattern.compile("[+-]([0-9]*)").matcher(expr)).find();

没有任何符号! (.*)。因为在这种情况下你会抓住整个表达式。

如果令牌中可能有其他符号(但不是+或=), 你可以这样做:

 (m = Pattern.compile("[+-]([^+-]*)").matcher(expr)).find();

答案 1 :(得分:0)

参考文献:pattern.matcher() vs pattern.matches()

while (Pattern.compile("[\\+-]").matcher(expr).find())
{
   ....
}