正規表現(sub, match)

python正規表現でcompileしたのちにsubすると対象正規表現を一括で置換してくれる。

以下はアルファベット大文字の後に"_“を入れる変換。「(?!^)…」は…にマッチしたときにマッチしない。ただし、先頭を除く。

import re
UPPER_RE = re.compile('(?!^)([A-Z])')

print UPPER_RE.sub(r'_\1', "DJANGO")

--> D_J_A_N_G_O

文字 -> 文字はreplaceで良さげやけど、正規表現で一括で置換する場合はこっちの方がいい。

付録

この表現使えれば、大量データに対して一括変換の対象項目を抽出できる。

import re

prog = re.compile(pattern)
result = prog.match(string)
if result:
    print 'matchした'