python re.sub グループ: \number の後の番号 質問する

python re.sub グループ: \number の後の番号 質問する

foobarを に置き換えるにはどうしたらいいですかfoo123bar?

これは機能しません:

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

これは機能します:

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

ベストアンサー1

答えは次のとおりです。

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

関連抜粋ドキュメント:

上で説明した文字エスケープとバック参照に加えて、は、構文で定義されているように、\g<name>という名前のグループに一致する部分文字列を使用します。は対応するグループ番号を使用します。したがって と同等ですが、 などの置換ではあいまいではありません。は、リテラル文字 が続くグループ 2 への参照ではなく、グループ 20 への参照として解釈されます。バック参照は、RE に一致する部分文字列全体に置き換えられます。name(?P<name>...)\g<number>\g<2>\2\g<2>0\20'0'\g<0>

おすすめ記事