gpt4 book ai didi

python - 使用正则表达式来处理数学方程式中的嵌套括号?

转载 作者:太空狗 更新时间:2023-10-29 22:08:19 25 4
gpt4 key购买 nike

如果我有:

statement = "(2*(3+1))*2"

我希望能够为我正在编写的数学阅读器处理括号内的多个括号。也许我以错误的方式解决这个问题,但我的目标是递归地深入到括号中,直到没有括号为止,然后我将执行数学运算。因此,我首先要关注

"(2*(3+1))" 

然后专注于

"(3+1)"

我希望通过将焦点值分配给正则表达式的起始索引和正则表达式的结束索引来做到这一点。我还没有弄清楚如何找到结束索引,但我对首先匹配正则表达式更感兴趣

r"\(.+\)" 

匹配失败。我希望它读作“一组括号中包含的任何一个或多个字符”。有人可以解释为什么上面的表达式与上面的 python 语句不匹配吗?

最佳答案

我喜欢正则表达式。我一直在使用它们。

不要为此使用正则表达式。

您需要一个实际解析您的数学表达式的解析器。您可能想阅读以下内容:

http://effbot.org/zone/simple-top-down-parsing.htm

一旦您真正解析了表达式,遍历解析树并计算结果就很简单了。

编辑:@Lattyware 建议使用 pyparsing,这也应该是一个不错的方法,并且可能比上面发布的 EFFBot 解决方案更容易。

https://github.com/pyparsing/pyparsing

这是四函数代数表达式计算器的 pyparsing 示例代码的直接链接:

http://pyparsing.wikispaces.com/file/view/fourFn.py

关于python - 使用正则表达式来处理数学方程式中的嵌套括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com