フリーレンの記録:正規表現の魔法の学び
旅を終えた後も、学びは続く。
魔法の書を手にしたのもつかの間、最近、フリーレンは自然言語処理の中で使われるという「正規表現」という魔法を発見した。
この不思議な文字列操作の力を、決して忘れることがないよう、ここに記録することにした。
replace関数は扱いやすいけど…
Pythonのreplace関数は、まるで初めて手にする杖のように、扱いやすく心強い。
何かを別のものへと変えるこの魔法は、たとえば簡単な言葉を別の言葉に置き換えるにはぴったりだ。
しかし、旅路で遭遇する多くの複雑な問題、たとえば電話番号や郵便番号のような特殊な書式には、replaceの魔法だけでは力が足りない。
一応replace関数の使用方法
text = "Hello World"
new_text = text.replace("World", "Python")
print(new_text) # Hello Python
↓↓↓replace関数の知識の泉はこちら(公式ドキュメント)↓↓↓
https://docs.python.org/ja/3/library/stdtypes.html#str.replace
reモジュール:深淵の正規表現の魔法
この先、replaceの魔法の力を超えるために「reモジュール」という魔導書が必要となる。
reモジュールには、正規表現の魔法が数多く秘められているらしい。
- re.search(pattern, string)
- 文字列全体を読み解き、魔法の文様に合うものを最初に見つけ出す
- re.match(pattern, string)
- 文字列の始まりから魔法の文様が重なっているかを確認する
- re.findall(pattern, string)
- 文様と一致するすべての部分を見つけ出し、リストにして返してくれる
いずれの呪文も、習得の時が訪れるだろう。
↓↓↓re.subの知識の泉はこちら(公式ドキュメント)↓↓↓
https://docs.python.org/ja/3/library/re.html
re.sub:柔軟なる置換の魔法
いよいよ、フリーレンが注目する置換魔法、re.subの出番だ。
この呪文を使うと、魔法の文様を頼りに、より精密な置換を実行できるようになる。
文字列のどんな姿も、この魔法の力で変えることができるのだ。
↓↓↓re.subの知識の泉はこちら(公式ドキュメント)↓↓↓
https://docs.python.org/ja/3/library/re.html#re.sub
例えば、電話番号を消し去る魔法
import re
re.sub(r'.*?\d{3}-\d{4}-\d{4}.*', '', '070-1234-5678') # 携帯番号削除
re.sub(r'.*?\d{4}-\d{2}-\d{4}.*', '', '1234-56-1890') # 固定1電話番号削除
re.sub(r'.*?\d{3}-\d{3}-\d{4}.*', '', '123-456-1890') # 固定2電話番号削除
re.sub(r'.*?\d{2}-\d{4}-\d{4}.*', '', '12-3456-1890') # 固定3電話番号削除
これで、意図した番号を消し去り、余計な痕跡を残さずに済む。
旅は続く。そして、学びもまた続く。