无效 expression/missing 组名
invalid expression/missing group name
我正在使用 python 2.7.17 并尝试进行一些正则表达式操作。一切正常,直到我 运行 出现以下错误:
Traceback (most recent call last):
File "latex/latex.py", line 130, in <module>
contents = re.sub(re.escape(i),img,contents, 0, re.MULTILINE)
File "/usr/lib/python2.7/re.py", line 155, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 286, in _subx
template = _compile_repl(template, pattern)
File "/usr/lib/python2.7/re.py", line 273, in _compile_repl
raise error, v # invalid expression
sre_constants.error: missing group name
我不知道出了什么问题,因为我实际上是在将字符串放入 sub:
之前将其转义
print "----"
print i
print re.escape(i)
print img
contents = re.sub(re.escape(i),img,contents, 0, re.MULTILINE)
这是打印语句产生的结果:
----
$$n \in \Z_{\geq 0}$$
$$n\ \in\ \Z\_\{\geq\ 0\}$$
<img class="latex inline" src="{filename}/images/latex-cache/symmetric-functions.md827a2321d2328298b1d5789840928039.png" /><!--n \in \Z_{\geq 0}-->
如您所见,它正确地转义了字符串,但由于某种原因它抛出了错误。我不知道是什么错误,因为我能找到的所有文章(例如 regex error : raise error, v # invalid expression )都没有转义字符串。
如有任何帮助,我们将不胜感激。
编辑
内容的内容是从文件中提取的。我编辑了脚本以打印内容。这是我的内容:
<div class="content">
Let $$n \in \Z_{\geq 0}$$
</div>
编辑 2
看来错误来自 img。当我用其他任何东西替换 img 时,它工作得很好。在以下情况下,我能够将其缩小到失败:
img = "\g"
我应该以某种方式转义 img 吗?
我也试过:
img = "\g"
这也导致了同样的错误。
原来是因为\g
在re.sub中比较特殊,用于找到的组(与</code>、<code>
等相同。 ) 所以这是一个特殊的字符。为了解决这个问题,您需要对其进行转义,但是由于 python 转义很有趣,因此您需要转义。换句话说你想要:
contents = re.sub(re.escape(i),img.replace('\','\\'),contents, 0, re.MULTILINE)
如需更详尽的解释,您可以查看以下答案:
我正在使用 python 2.7.17 并尝试进行一些正则表达式操作。一切正常,直到我 运行 出现以下错误:
Traceback (most recent call last):
File "latex/latex.py", line 130, in <module>
contents = re.sub(re.escape(i),img,contents, 0, re.MULTILINE)
File "/usr/lib/python2.7/re.py", line 155, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 286, in _subx
template = _compile_repl(template, pattern)
File "/usr/lib/python2.7/re.py", line 273, in _compile_repl
raise error, v # invalid expression
sre_constants.error: missing group name
我不知道出了什么问题,因为我实际上是在将字符串放入 sub:
之前将其转义print "----"
print i
print re.escape(i)
print img
contents = re.sub(re.escape(i),img,contents, 0, re.MULTILINE)
这是打印语句产生的结果:
----
$$n \in \Z_{\geq 0}$$
$$n\ \in\ \Z\_\{\geq\ 0\}$$
<img class="latex inline" src="{filename}/images/latex-cache/symmetric-functions.md827a2321d2328298b1d5789840928039.png" /><!--n \in \Z_{\geq 0}-->
如您所见,它正确地转义了字符串,但由于某种原因它抛出了错误。我不知道是什么错误,因为我能找到的所有文章(例如 regex error : raise error, v # invalid expression )都没有转义字符串。
如有任何帮助,我们将不胜感激。
编辑
内容的内容是从文件中提取的。我编辑了脚本以打印内容。这是我的内容:
<div class="content">
Let $$n \in \Z_{\geq 0}$$
</div>
编辑 2
看来错误来自 img。当我用其他任何东西替换 img 时,它工作得很好。在以下情况下,我能够将其缩小到失败:
img = "\g"
我应该以某种方式转义 img 吗?
我也试过:
img = "\g"
这也导致了同样的错误。
原来是因为\g
在re.sub中比较特殊,用于找到的组(与</code>、<code>
等相同。 ) 所以这是一个特殊的字符。为了解决这个问题,您需要对其进行转义,但是由于 python 转义很有趣,因此您需要转义。换句话说你想要:
contents = re.sub(re.escape(i),img.replace('\','\\'),contents, 0, re.MULTILINE)
如需更详尽的解释,您可以查看以下答案: