Python re.sub返回引用不返回引用

时间:2013-12-24 18:24:08

标签: python regex

我有以下内容:

<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>

我有以下内容:

fileText = re.sub("<b>(.*?)</b>", "\1", fileText, flags=re.DOTALL)

在哪个fileText中是我在上面发布的字符串。当我运行正则表达式替换后打印出fileText时,我会回来

<text top="52" left="20" width="383" height="15" font="0"></text>

而不是预期的

<text top="52" left="20" width="383" height="15" font="0">test</text>

现在我对正则表达式非常熟练,我知道它应该可以工作,事实上我知道它匹配正确,因为我可以在groups中看到它,当我进行搜索并打印出{{1但我是python的新手,我很困惑为什么它没有正确使用后向引用

1 个答案:

答案 0 :(得分:57)

您需要在此处使用raw-string,以便不将反斜杠作为转义字符处理:

>>> import re
>>> fileText = '<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>'
>>> fileText = re.sub("<b>(.*?)</b>", r"\1", fileText, flags=re.DOTALL)
>>> fileText
'<text top="52" left="20" width="383" height="15" font="0">test</text>'
>>>

请注意"\1"如何更改为r"\1"。虽然这是一个非常小的变化(一个字符),但它有很大的影响。见下文:

>>> "\1"
'\x01'
>>> r"\1"
'\\1'
>>>
相关问题