我将验证简单的数学表达式,如:
a = 1 + 2
b = 2.2
a = b + 5.5
a = b - -5.5
a = -1 + 2
a = -2.4
a = 3.5 / 0.2 + 1
a = 3 * -2.1
注意:运算符优先级并不重要!
我尝试按照表达式但我什么也没得到!
for digits: ^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$
for operators: [-]|[+]|[*]|[/]
for variables: [a-z]+|[A-Z]+
我将这些表达式放在C#字符串变量中,并使用.net Regex.Matches(...)
来查找匹配项。但我一无所获!
答案 0 :(得分:3)
这对正则表达式来说不是一个好工作。如果你想评估真正的数学表达式,你将无法想出能够处理所有情况的正则表达式。正如卡尔·诺鲁姆所说,这是一个类似的讨论,为什么你不能解析html with regex。
答案 1 :(得分:1)
尝试:
for digits: ((-[0-9]|[0-9])(\.[0-9])|[0-9])
for operators: (-|\+|\*|\/)
for variables: ([a-z]|[A-Z])
在Regulator中测试时看起来很好。
修改强>
第一个可能有点'草率',我用完午餐时间就乱了:P
答案 2 :(得分:0)