从字符串中获取计算的正则表达式

时间:2013-04-17 05:56:54

标签: php regex

我需要帮助编写一个reg ex或者更多的搜索字符串的东西。

首先,它搜索带有小数点或逗号的数字串(0到9),但小数点和逗号只能位于两个数字之间。两个小数点彼此相邻,或两个逗号,或逗号旁边的小数点,或小数点旁边的逗号。

然后,如果找到了,它会在同一个字符串中搜索数字0到9,打开括号,打开方括号或打开括号,并继续沿着它找到任何数字,任何括号,任何方格 - 括号,任何大括号,两个数字之间的任何逗号,两个数字之间的任何小数点,任何加号(+),减号( - ),星号(*)或正斜杠(/),以及它们之间的空格。它停在最后一个空格,括号括起来,关闭方括号或闭括号。

我正在尝试解析看似计算的数据然后解决它。

例如,在字符串中:

'The quick brown 1234*(5+2) jumps over"

取出

the 1234*(5+2)

在字符串

'[5/{4+(5*2)-1}] on a sunny (2 day.'

只取出

[5/{4+(5*2)-1}]

1 个答案:

答案 0 :(得分:0)

使用正则表达式无法100%解决此任务。最好的办法是使用正则表达式来分隔看起来像表达式的东西,然后使用其他引擎来尝试计算它。

这应该是一个好的开始:取出任何连续的数字,括号,括号和算术符号序列:

([-\+\*/\[\]\(\)\d\s]+)

如果通过计算引擎运行此匹配的结果会产生错误,只需跳过它并尝试下一个匹配。