如何用foo123bar
替换foobar
?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
这是可行的:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
我认为这是一个常见的问题,当有像\number
这样的东西。有谁能给我一个关于如何处理这件事的提示吗?
发布于 2011-05-13 05:28:31
答案是:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
文档中的相关摘录:
除了如上所述的字符转义和反向引用外,\g还将使用由(?P...)定义的名称组名匹配的子字符串语法。\g使用相应的组号;因此,\g<2>等同于\2,但在\g<2>0等替换项中不会有歧义。\20将被解释为对组20的引用,而不是对组2的引用,后跟文字字符“0”。在与RE.
匹配的整个子字符串中进行反向引用\g<0>替换
https://stackoverflow.com/questions/5984633
复制相似问题