我需要一个匹配的正则表达式
0
- 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)']