【发布时间】:2009-10-27 15:58:15
【问题描述】:
我需要一个匹配的正则表达式
0-9,(,),+,-,*和/。
【问题讨论】:
-
使用怀孕?埃雷格?什么语言?什么系统?
标签: regex
我需要一个匹配的正则表达式
0-9,(,),+,-,*和/。
【问题讨论】:
标签: regex
接受的答案不能处理很多基本情况。 这应该可以完成工作:
^([-+]? ?(\d+|\(\g<1>\))( ?[-+*\/] ?\g<1>)?)$
说明:
我们要匹配整个字符串:
^...$
表达式可以有符号:
[-+]? ?
一个表达式由多个数字或另一个有效的表达式组成,用括号括起来:
(\d+|\(\g<1>\))
一个有效的表达式后面可以跟一个操作和另一个有效的表达式,并且仍然是一个有效的表达式:
( ?[-+*\/] ?\g<1>)?
【讨论】:
(/) 这是完全可以解决的。或者你可以有固定数量的嵌套(比如一个人不能将括号嵌套在括号内超过 3 次)。或者,您可以允许无限嵌套并使用正则表达式来确保您有相同数量的左括号和右括号,然后添加一些代码来检查正则表达式是否匹配时的正确平衡。
您可能正在尝试匹配 5+7-3 之类的数字表达式。
这应该匹配他们:
([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)
【讨论】:
25*(53+5 有效,而2*(3) 无效。如果您想尝试查找更多信息:jsfiddle.net/a7eg9a78
[\d\(\)\+\-\*\/\.]
【讨论】:
/,要么编写像 m~[\d()+*/.-]~ 这样的正则表达式。
我认为您正在寻找字符类
[0-9()+\-*/.]
这应该匹配包含从 0 到 9 或 ( ,)、+、- 或 * 的任意数字的单词
【讨论】:
-应该是第一个字符,比如[-0-9()+*/],不是吗?
-放在第一个也可以:-),从来不知道。
如果你需要一个正则表达式来匹配这样的算术表达式:3+2-24*2/2-1,你可以试试这个:
String reg1="([0-9]+[\\+\\-\\*\\/]{1}[0-9]+)+([\\+\\-\\*\\/]{1}[0-9]+)*";
如果您要编辑此正则表达式,您可以将括号添加到您想要的位置。
【讨论】:
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)']
【讨论】:
[0-9\(\)\+\-\*\./\"]
【讨论】:
这个正则表达式对我有帮助,只是在这里记下它可能对其他人有帮助。
^[0-9+\-*\/\(\)]*$
【讨论】:
这适用于小数点后 4 位的数学表达式:
^([-+]? ?(\d+(\.\d{0,4})?|\(\g<1>\))( ?[-+*\/] ?\g<1>)?)$
它的灵感来自@ndnenkov 的回答。
我希望这对某人有用。
【讨论】:
https://regex101.com/r/377yXA/1
这个正则表达式对我有用
【讨论】: