Pythonでの置換文字列におけるキャプチャグループ
subメソッドを使用する際、正規表現で何かをキャプチャグループ(括弧)で囲んだ場合、置換文字列の中で、ダブルバックスラッシュ\とキャプチャグループの番号を書くことで、そのキャプチャした内容を挿入できます。例えば、\1は最初のキャプチャグループ、\2は2番目のキャプチャグループを参照します。
これがなぜ必要で、どのように使うのか、例を見てみましょう。
例
すべての数字を見つけ、それらを同じ数字ですが丸括弧で囲んだものに置き換えてみましょう。これを行うには、見つかったすべての数字を、それ自体を括弧で囲んだものに置き換えます:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
結果、変数には以下の文字列が格納されます:
'(1) (23) (456) xax'
例
'x'で囲まれた数字を表すすべての文字列を見つけ、それらの数字を同じ数字ですが'!'記号で囲んだものに置き換えてみましょう:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
結果、変数には以下の文字列が格納されます:
'!1! !23! !456! xax'
例
次の問題を解決してみましょう:文字列'aaa@bbb ccc@ddd'(文字、その後@、その後文字)が与えられます。部分文字列'aaa@bbb'内の'@'の前後の文字を入れ替える必要があります:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
結果、変数には以下の文字列が格納されます:
'bbb@aaa ccc@ddd'
実践問題
以下の文字列が与えられます:
txt = '12 34 56 78'
すべての2桁の数字において、桁を入れ替えてください。
日付の文字列が与えられます:
txt = '31.12.2025'
この日付を'2025.12.31'の形式に変換してください。