【发布时间】:2011-07-29 01:34:04
【问题描述】:
我的字符串包含简单的数学问题 1+10、2+2、5-3...我希望能够匹配这些数学问题并用解决方案替换它们。
所以:吉米周五满 5+5 岁。改为:吉米周五满 10 岁。
此时我不需要乘法或除法,所以我认为它相对简单,但我没有接受过 PHP 的经典训练。我想我需要一个正则表达式来匹配问题,但我几乎从那里迷失了。
1+10 becomes 11
2+2 becomes 4
【问题讨论】:
-
您在哪个部分遇到了问题?制定适当的正则表达式?做计算?将结果代入输出字符串?
-
就像奥利说的,这里到底有什么问题?
-
您需要编写一个正则表达式来隔离和捕获两个数字和运算符。然后分析运算符并评估表达式(从正则表达式的捕获部分),并用评估表达式的结果替换原始模式。随着数学表达式复杂性的增加,处理它们的正则表达式的适用性会降低,即使您继续使用正则表达式来隔离数学表达式,您最终也可能需要语法和词法分析器来处理表达式。表达。
-
@Jonathan Leffler:技术上是对的,但是已经有一个解析器可以评估这样的数学表达式:PHP 本身。只是评估它,有一个正则表达式修饰符。请参阅下面的答案。
-
@Hakre:有趣-谢谢。
标签: php regex math preg-replace