如何将foobar
替换为foo123bar
?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
这有效:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
我认为这是\number
之类的常见问题。任何人都可以给我一个如何处理这个问题的提示吗?
答案 0 :(得分:235)
答案是:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
文档的相关摘录:
除了角色逃脱和 如上所述的反向引用, \ g将使用子字符串 由名为name的组匹配,as 由(?P ...)语法定义。 \ g使用相应的 组号; \克LT 2 - ;因此 相当于\ 2,但不含糊 在诸如\ g&lt; 2&gt; 0的替代品中。 \ 20 将被解释为对...的引用 第20组,而不是对第2组的引用 后跟字面字符'0'。 反向引用\ g&lt; 0&gt;代替 整个子串匹配 RE