0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現を使った置換の魔法(葬送のフリーレン風に)

Posted at

フリーレンの記録:正規表現の魔法の学び

旅を終えた後も、学びは続く。
魔法の書を手にしたのもつかの間、最近、フリーレンは自然言語処理の中で使われるという「正規表現」という魔法を発見した。
この不思議な文字列操作の力を、決して忘れることがないよう、ここに記録することにした。

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電話番号削除

これで、意図した番号を消し去り、余計な痕跡を残さずに済む。

旅は続く。そして、学びもまた続く。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?