找到最嵌套的 (),用 SymPy 解决,并向外工作?
Find the Most Nested (), Solving with SymPy, and Work Outwards?
总体目标是以与人类相同的方式求解一个简单的线性 [one var] 方程。所以,找到最嵌套的(),分配直到所有乘法完成。 (然后组合相似项,然后将 x 的一侧除以常数的另一侧)
我正在尝试找出 Python 方程式中的运算顺序。例如,在
3(18(7x-3)+x) = 90
我想找到嵌套最多的一组 () [在本例中是 7x-3] 并从那里开始计算。我不确定 RegEx 是否是在 Python 中执行此操作的最佳方式。
此外,我使用的是 SymPy,所以在某些情况下,当我找到最嵌套的 () 时,将没有任何问题可以解决,因为无论如何第一步只是乘法。
使用 re.search
而不是 re.match
因为 match
尝试从输入字符串的开头匹配。
>>> import re
>>> s = '3(18(7x-3)+x) = 90'
>>> re.search(r'(?<=\()[^()]*(?=\))', s).group()
'7x-3'
总体目标是以与人类相同的方式求解一个简单的线性 [one var] 方程。所以,找到最嵌套的(),分配直到所有乘法完成。 (然后组合相似项,然后将 x 的一侧除以常数的另一侧)
我正在尝试找出 Python 方程式中的运算顺序。例如,在
3(18(7x-3)+x) = 90
我想找到嵌套最多的一组 () [在本例中是 7x-3] 并从那里开始计算。我不确定 RegEx 是否是在 Python 中执行此操作的最佳方式。 此外,我使用的是 SymPy,所以在某些情况下,当我找到最嵌套的 () 时,将没有任何问题可以解决,因为无论如何第一步只是乘法。
使用 re.search
而不是 re.match
因为 match
尝试从输入字符串的开头匹配。
>>> import re
>>> s = '3(18(7x-3)+x) = 90'
>>> re.search(r'(?<=\()[^()]*(?=\))', s).group()
'7x-3'