python re.sub group:\ number后面的数字

时间:2011-05-12 21:22:25

标签: python regex numbers regex-group

如何将foobar替换为foo123bar

这不起作用:

>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'

这有效:

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'

我认为这是\number之类的常见问题。任何人都可以给我一个如何处理这个问题的提示吗?

1 个答案:

答案 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