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);
这个正则表达式:
("[(\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);