Python re.sub回参考不回引用

我有以下几点:

<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是我在上面发布的string。 当我运行正则expression式replace后,我打印出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> 

现在我对正则expression式很熟练,我知道它应该工作,事实上我知道它匹配正确,因为我可以在groups看到它,当我做search和打印出的groups但我是新来的python和困惑至于为什么它不正确地处理后面的引用

您需要在这里使用原始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' >>>