【发布时间】:2019-04-29 18:34:25
【问题描述】:
在 Python re.sub() 的替换参数中,我想引用整个匹配的字符串,即组 0。但是,它没有按预期工作。
>>> re.sub(r"(\d)\1", r"\0\1", "aa11bb22cc33")
'aa\x001bb\x002cc\x003'
请注意,\1 确实正确引用了第 1 组。我必须使用 \g<n> 语法来引用第 0 组。
>>> re.sub(r"(\d)\1", r"\g<0>\1", "aa11bb22cc33")
'aa111bb222cc333'
我想知道,替换参数中是否可以使用\n语法来引用组0?
【问题讨论】:
-
来自文档:\number 匹配同号组的内容。 组从 1 开始编号。
-
@wwii 感谢您指出这一点。我以前不知道。这与许多其他正则表达式引擎不同。
-
这并不能回答你的问题,严格来说,但是:如果目标是用连续的数字三元组替换连续的数字对,你就不能完全不参考零组吗?类似
re.sub(r"(\d)\1", r"\1\1\1", "aa11bb22cc33") -
@Kevin 这不是一个真正的问题,我只是用它来演示我的问题。
-
我认为可能是这样。幸好我没有把我的建议写成答案:-)
标签: python regex replace str-replace