正则表达式替换中的字符编码

时间:2014-01-31 16:40:26

标签: python regex python-2.7

我试图用另一种模式替换正则表达式。更具体地说,我想将$$ some_latex $$替换为$latex some_latex$。我试过跟随。

In [22]: re.sub(r'\$\$(?P<pat>.+?)\$\$', r'$latex \1 $', "$$ x = \frac{2}{3}$$", re.DOTALL | re.U)
Out[22]: '$latex  x = \x0crac{2}{3} $'

单词\frac将转换为\x0crac。如何克服这一点。我也尝试过跟随。它没有帮助。

re.sub(r'\$\$(?P<pat>.+?)\$\$', r'$latex \1 $', "$$ x = \frac{2{3}$$".encode("string_escape"), re.DOTALL | re.U)
'$latex  x = \\x0crac{2}{3} $'

1 个答案:

答案 0 :(得分:1)

这与正则表达式无关; \f是表单提要转义码:

>>> '\f'
'\x0c'
>>> len('\f')
1

在您的输入中已经存在 ,然后才能进行替换:

>>> "$$ x = \frac{2}{3}$$"
'$$ x = \x0crac{2}{3}$$'

将斜杠加倍或使用原始字符串文字:

>>> '\\f'
'\\f'
>>> r'\f'
'\\f'
>>> print '\\f'
\f
>>> len('\\f')
2