【发布时间】:2014-10-13 06:28:32
【问题描述】:
我目前正在使用 Python 编写一个代码项目,该项目将 LaTeX 数学标记音译为标准 Python 命令 \frac{a}{b} 到 a/b。
我以一种我认为对嵌套方程最友好的方式来解决这个问题:递归。每个方程都被分解为对象和运算符,并且对象(例如括号语句和 LaTeX 术语)被再次评估,直到达到最大深度。
但是,在使用多个嵌套参数(例如我上面提到的那个)分解某些 LaTeX 术语时,我在使用正则表达式时遇到了一些障碍。在摆弄并搜索了永恒之后,我最终得到了这个:
唯一的问题是,我在尝试在 Python 中评估完全相同的术语时遇到此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\lib\re.py", line 206, in findall
return _compile(pattern, flags).findall(string)
File "C:\Python34\lib\re.py", line 288, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Python34\lib\sre_compile.py", line 465, in compile
p = sre_parse.parse(p, flags)
File "C:\Python34\lib\sre_parse.py", line 746, in parse
p = _parse_sub(source, pattern, 0)
File "C:\Python34\lib\sre_parse.py", line 358, in _parse_sub
itemsappend(_parse(source, state))
File "C:\Python34\lib\sre_parse.py", line 694, in _parse
p = _parse_sub(source, state)
File "C:\Python34\lib\sre_parse.py", line 358, in _parse_sub
itemsappend(_parse(source, state))
File "C:\Python34\lib\sre_parse.py", line 694, in _parse
p = _parse_sub(source, state)
File "C:\Python34\lib\sre_parse.py", line 358, in _parse_sub
itemsappend(_parse(source, state))
File "C:\Python34\lib\sre_parse.py", line 681, in _parse
raise error("unexpected end of pattern")
sre_constants.error: unexpected end of pattern
我不太确定我的正则表达式有什么问题,并且已经改变了一段时间试图让它工作,但无济于事......
【问题讨论】:
-
看来你想要这样的东西regex101.com/r/oO5oG9/2
-
一种更简单的方法是首先替换最里面的表达式。为此,您只需要禁止嵌套大括号。
-
你能添加一个项目的链接吗?