数学正则表达式

时间:2011-12-16 19:45:21

标签: regex math

我需要一个正则表达式来分割数学表达式,例如:

-1*x+2*y

指向:-1*x2*y

我不能只根据+-拆分该字符串(因为可能有负数)

3 个答案:

答案 0 :(得分:3)

您可以在+-上拆分,前面有字母,数字和可能在表达式中可接受的其他元素(例如,括号)。您可以使用look-behind来完成此操作。

例如在python中你可以这样做:

>>> import re
>>> re.split('(?<=[a-zA-Z0-9)])[+-]', '-a+10*x-2*y+(-2)-b')
['-a', '10*x', '2*y', '(-2)', 'b']

这会在每个+-上分开,前面没有小写或大写字母或数字或右括号。您可能需要根据您对“数学表达式”的确切规范进行调整。

这个或类似的正则表达式应该适用于其他正则表达式引擎。

答案 1 :(得分:2)

Math表达式是解析器的经典应用程序。

正则表达不足以完成正确的工作。即使您可以滥用正则表达式库中的高级功能来强制使用解决方案,结果也可能会产生毛茸茸的结果。

答案 2 :(得分:0)

如果您总是在+上拆分并且只在-上拆分,如果它不在表达式的开头或者在'+'(和空格)之后会怎样?