subによる文字列の置換

入門Python3 7.1.5


subで文字列の置換ができます。

import re
str1 = "aa11bb22cc33bb"
str2  = re.sub(r'\d+',':',str1)
print(str2)
$ py main.py
aa:bb:cc:bb


グループ化して後方参照することもできます。

import re
str1 = "aa11bb22cc33bb"
str2  = re.sub(r'(\d+)',r'[\1]',str1)
print(str2)
$ py main.py
aa[11]bb[22]cc[33]bb


また関数を指定して後方参照を関数で受け取ることもできます。関数にはMatchオブジェクトが来ます。

import re

def foo (match):
    '''数値を二倍にして置換する'''
    return str(int(match.group()) * 2)

str1 = "a1b2c3d4"
str2  = re.sub(r'\d',foo,str1)
print(str2)
$ py main.py
a2b4c6d8