正则表达式匹配数字和基本数学运算符

时间:2009-10-27 15:58:15

标签: regex

我需要一个匹配的正则表达式 0 - 9()+-*/

9 个答案:

答案 0 :(得分:11)

接受的答案无法处理很多基本案例。 这应该做的工作:

^([-+]? ?(\d+|\(\g<1>\))( ?[-+*\/] ?\g<1>)?)$

阐释:

我们希望匹配整个字符串:

^...$

表达式可以有一个标志:

[-+]? ?

表达式由多个数字或另一个有效表达式组成,用括号括起来:

(\d+|\(\g<1>\))

有效的表达式后面可以跟一个操作和另一个有效的表达式,它仍然是一个有效的表达式:

( ?[-+*\/] ?\g<1>)?

答案 1 :(得分:8)

看起来您可能正在尝试匹配数字表达式,如5 + 7-3。

这应该与他们匹配:

([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)

答案 2 :(得分:5)

我认为你正在寻找角色类

[0-9()+\-*/.]

这应匹配包含0到9或(,),+, - ,/或*

之间任何数字的单词

答案 3 :(得分:5)

[\d\(\)\+\-\*\/\.]

答案 4 :(得分:2)

如果你需要一个正则表达式来匹配这样的算术表达式:3 + 2-24 * 2 / 2-1你可以试试这个:

String reg1="([0-9]+[\\+\\-\\*\\/]{1}[0-9]+)+([\\+\\-\\*\\/]{1}[0-9]+)*";

如果您要编辑此正则表达式,可以在任意位置添加括号。

答案 5 :(得分:1)

[0-9\(\)\+\-\*\./\"]

答案 6 :(得分:0)

这个正则表达式对我有所帮助,只需在此处记下,也许它可以帮助其他人。

^[0-9+\-*\/\(\)]*$

答案 7 :(得分:0)

这适用于具有四个小数位的数学表达式:

^([-+]? ?(\d+(\.\d{0,4})?|\(\g<1>\))( ?[-+*\/] ?\g<1>)?)$

它的灵感来自@ndnenkov答案。

我希望这对某人有用。

答案 8 :(得分:0)

regex  = '(?:[0-9 ()]+[*+/-])+[0-9 ()]+'
string = 'mig 2*7 5+ 43 asf 4 3+32 *33 as 0 fa 3 5+9 m (3 + 5) - 9*(99)'
re.findall(regex, string)
# answer
# [' 2*7 5+ 43 ', ' 4 3+32 *33 ', ' 3 5+9 ', ' (3 + 5) - 9*(99)']