Java 用于正确数学运算的正则表达式

Java Regex for proper math operation

这个正则表达式:

("[(\d){1,} (*|+|-|/){1} (\d){1,}]")

应该捕获所有正确的数学运算,

(示例:“3+4”,“3+3*6+2/3-6*434234+5”,“345345+2342/3/3/4-5”)

但错的不要抓。

(示例:“3+-2”、“+1”、“456+/5”、“3+4+5+”)

但它似乎根本没有捕捉到任何输入。 这里有什么问题?

您忘记了必须使用反斜杠对未转义的定界符进行转义:

[(\d){1,} (*|+|-|\/){1} (\d){1,}]
                  ^ Escaped with backslash

编辑:

在Java中你需要使用两个反斜杠,因为在Java中反斜杠也是一个转义字符:

Matcher match = Pattern.compile("[(\\d){1,} (*|+|-|\/){1} (\\d){1,}]").matcher("3+3*6+2/3-6*434234+5");
String s = "";
while (match.find())
    s += match.group() + "\n";
System.out.println(s);