2011-12-16 140 views
1

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

-1*x+2*y 

到:-1*x2*y

我不能只拆分字符串中的+-基础(因为有可能是负数)

回答

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'] 

这分裂每个+-不小的或资本字母或数字或一个右括号前面。您可能需要根据您对“数学表达式”构成的确切规范来调整。

这个或类似的正则表达式应该在其他正则表达式引擎中工作。

+0

这就是我需要的,非常感谢亚当! – Tony 2011-12-18 16:22:54

0

如果你一直各执+,并且只在-分裂,如果它不是在表达式的开头或跟随着g a'+'(和空格)?

2

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

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