python re.sub 组:之后的数字 琥珀色

问题描述 投票:0回答:1

如何将

foobar
替换为
foo123bar

这不起作用:

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

这有效:

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
python regex numbers regex-group
1个回答
486
投票

答案是:

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

相关摘录自docs

除了如上所述的字符转义和反向引用之外,

\g<name>
还将使用名为
name
的组匹配的子字符串,如
(?P<name>...)
语法所定义。
\g<number>
使用对应的组号;因此,
\g<2>
等同于
\2
,但在
\g<2>0
等替换中并不含糊。
\20
将被解释为对组 20 的引用,而不是对组 2 的引用,后跟文字字符
'0'
。反向引用
\g<0>
替换 RE 匹配的整个子字符串。

© www.soinside.com 2019 - 2024. All rights reserved.