Python re.sub back引用不是back引用

2024-09-29 21:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下资料:

<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是我在上面发布的字符串。当我在运行regex替换之后打印出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>

现在我对regex相当精通,我知道它应该可以工作,事实上我知道它匹配得很好,因为当我搜索并打印出groups时,我可以在groups中看到它,但是我对python还不熟悉,我不明白为什么它不能正确地使用反向引用


Tags: 字符串texttestretopwidthleftregex
1条回答
网友
1楼 · 发布于 2024-09-29 21:38:04

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

相关问题 更多 >

    热门问题