読者です 読者をやめる 読者になる 読者になる

曖昧にならない後方参照の記述方法

python正規表現を使って置換処理をするときに、後方参照で少し困ったことが起きた。
一般的に使われる「\1」のような後方参照の直後に数字を続けると当然だけど後方参照の数字がどこまでなのかわからなくなる、というものだ。
解決方法は簡単で「\1」ではなく、「\g{1}」とする。

以下のようなケースは問題ない。

>>> import re  
>>> re.sub(r'(.*) (.*)', r'\1-\2', 'hoge fuga')
'hoge-fuga'

以下のようにすると問題が起きる。

>>> re.sub(r'(.*) (.*)', r'\1-\2012345', 'hoge fuga')
'hoge-\x812345'

解決は以下のようにする。

>>> re.sub(r'(.*) (.*)', r'\g<1>-\g<2>012345', 'hoge fuga')
'hoge-fuga012345'

公式のドキュメントにも書いてある。
http://docs.python.jp/2/library/re.html