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

我如何将'foobar'replace为'foo123bar'?

这不起作用:

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

这工作:

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

我认为这是一个普遍的问题:号码后面的数字。 任何人都可以给我一点如何处理这个问题?

答案是:

 re.sub(r'(foo)', r'\g<1>123', 'foobar') 

相关文件摘录如下:

除了如上所述的字符转义和反向引用外,\ g将使用由(?P …)语法定义的名为name的组匹配的子string。 \ g使用​​相应的组号码; \ g 2因此等于\ 2,但在诸如\ g <2>的replace中不是不明确的。 \ 20将被解释为对组20的引用,而不是对组2的引用,后面是字面字符“0”。 反向引用\ g <0>代替RE中匹配的整个子string。