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

如何用foo123bar替换foobar ?

这行不通:

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

如此:

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

我认为这是一个常见的问题,当有像\number。有人能给我个提示吗?

121542 次浏览

答案是:

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

相关文件节选:

除了字符转义和 如上所述的反向参考, \g将使用子字符串 由命名为name的组匹配,如 由(?P…)语法定义。 \g使用对应的 组数;\g<2>因此 相当于\2,但没有歧义 在替换如\g<2>0。\ 20 会被理解为指的是 第20组,而不是第2组 后面跟着文字字符“0”。 反向参考\g<0>替代 匹配的整个子字符串 RE . < / p >