小编典典

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

all

我该如何foobar替换foo123bar

这不起作用:

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

这有效:

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

我认为当有类似的东西时这是一个常见的问题\number。谁能给我一个关于如何处理这个问题的提示?


阅读 162

收藏
2022-05-20

共1个答案

小编典典

答案是:

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 匹配的整个子字符串。

2022-05-20