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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (196)

如何将'foobar'替换为'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还将使用由名为name的组匹配的子字符串,由(?P ...)语法定义。\ g使用​​相应的组号; 因此,\ g <2>等于\ 2,但在诸如\ g <2>的替换中不是模糊的。\ 20将被解释为对组20的引用,而不是对组2的引用,后跟文字字符“0”。反向引用\ g <0>替换RE匹配的整个子字符串。

扫码关注云+社区

领取腾讯云代金券