Python re.sub 反向引用而不是反向引用

标签 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 但我是 python 新手,我很困惑为什么它不能正确使用反向引用

最佳答案

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

关于Python re.sub 反向引用而不是反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765265/

相关文章:

node.js - 使用正则表达式按空格分割字符串

javascript - 试图理解这个 location.href.match JS RegExp 部分

python - 从度 >= 3 的节点处分割的图中检索路径

python - 如何在 numpy 数组中同时允许 float 和数组

python - 当元组中只有一个列表时,为什么元组的类型是列表?

regex - 谷歌分析过滤器显示没有流量

python - 从谷歌导入Create_Service ModuleNotFoundError : No module named 'Google'

Python3.4 - 如何获取使用 Popen 启动的程序的 PID? (操作系统-Raspbian Jessie)

Python 正则表达式匹配特殊字符

php - 如何从字符串中删除所有数字?