Python 正規表現の混乱: グループ番号付き後方参照による置換
正規表現を使用して "foobar" を "foo123bar" に置き換えようとすると、予期しない結果に遭遇する可能性があります。 re.sub(r'(foo)', r'1123', 'foobar') のような置換は、目的の出力を生成できず、代わりに「J3bar」を返します。
問題を理解するには、次のことが重要です。グループ番号の後方参照とリテラル数字の違いに注意してください。この場合、1123 は、「1123」を最初のキャプチャ グループへの参照としてではなく、リテラル文字列として扱います。その結果、置換は意図したとおりに機能しません。
正しい置換を実現するには、構文 g
re.sub(r'(foo)', r'\g<1>123', 'foobar')
この場合、g<1>最初のグループと一致する部分文字列 (入力からの文字列「foo」) をキャプチャします。適切なグループ番号後方参照を使用すると、置換が正しく実行され、出力「foo123bar」が得られます。
この動作については、g
以上がPython の正規表現で `re.sub(r\'(foo)\', r\'\\1123\', \'foobar\')` が \'foo123bar\' を生成しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。