Pythonで正規表現:冗長(Verbose)な表現

正規表現はとかく呪文のような読み難い表現になり勝ちであるごが、Pythonでは少し工夫がされていて冗長な表現ができる。実例を示す:


import re
telNumber = re.compile(r"""
^0    #ゼロ発信
(
    #固定電話(市外・市内・加入者)
      [36]-\d{4}- (\d{4})  #東京(3)・大阪(6)
    | \d{2}-\d{3}- (\d{4}) #仙台(22)
    | \d{3}-\d{2}- (\d{4]) #松本(263)
    | \d{4}-\d-    (\d{4}) #伊豆大島(4992)
    #携帯電話(キャリア・管轄・加入者)
    | [7-9]0-\d{3} (\d-\d{4})    
)
""", re.VERBOSE)

m=telNumber.search('070-2345-9876')
if m :
    print(m.group(0))
else:
    print(m)

日本の電話番号のマッチングのための正規表現であるが、コメント(#)や空白・改行を使って見やすくできる。