ど文系の中学校英語教員がプログラミング言語Pythonを学んでみた 19日目 正規表現の巻

Monday, 16 March 2020

プログラミングとPython

 こんにちは、まさです。
引き続き『退屈なことはPythonにやらせよう』を学んでいます。今日は第7章「正規表現」についてです。

➤正規表現とは、ある特定のパターンをもつ文字列をしている表記法の1つである。例えば、111-1234という郵便番号は、\d\d\d-\d\d\d\dと表せ、これを更に、d\{3}-\d{4}と書き表わせる。

➤reというのが正規表現のモジュールで、regexはregular expressionの略、正規表現を生成するときは、re.compile()関数を使う、その際、\を数回使うが、このバックスラッシュはエスケープ文字ではないですよ、と表すために、r'   'を使う。search()メソッドで検索し、group()メソッドでマッチした文字列を取得する。

タイトル
1
2
3
4
5
>>> import re
>>> phone_num_regex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
>>> mo = phone_num_regex.search('私の電話番号は415-555-4242です。')
>>> print('電話番号が見つかりました:'+ mo.group())
電話番号が見つかりました:415-555-4242

➤縦線 | を使うと、複数のパターンのうちの1つとマッチさせられる。
タイトル
1
2
3
4
>>> hero_regex = re.compile(r'Batman|Tina rey')
>>> mo1 = hero_regex.search('Batman and Tina Fey.')
>>> mo1.group()
'Batman'

➤これは'Batman', 'Batmobile', 'Batbat'のいずれかにマッチさせたいとき。

タイトル
1
2
3
4
>>> bat_regex = re.compile(r'Bat(man|mobile|copter|bat)')
>>> mo = bat_regex.search('Batmobile lost a wheet')
>>> mo.group()
'Batmobile'
 その他、?,+などいろいろな正規表現があるらしいが、全部覚えるのも大変なので、ここでギブアップ。