Pythonの正規表現(reモジュール)の基本!パターンマッチングを学ぼう
生徒
「Pythonで、特定の文字だけを探したり、文字のパターンを見つけたりすることってできますか?」
先生
「はい、それには正規表現(せいきひょうげん)という方法があります。Pythonではreモジュール
を使って、それが簡単にできますよ。」
生徒
「正規表現って難しそうですが、初心者でも使えるんですか?」
先生
「もちろんです。まずは基本だけをゆっくり学べば大丈夫です。一緒にパターンマッチングの基本を学んでいきましょう!」
1. 正規表現とは?初心者向けにやさしく解説
正規表現とは、文字の並び方のルール(パターン)を使って、文字列の中から特定の文字や形式を探す方法のことです。
たとえば、「メールアドレスを見つけたい」「電話番号だけ抜き出したい」「数字だけ抽出したい」といったときに役立ちます。
Pythonでは、re
(アール・イー)というモジュールを使って正規表現を扱います。
2. reモジュールの使い方と基本の関数
reモジュール
には、いくつかの便利な関数があります。初心者の方は、まずこの3つを覚えましょう。
re.search()
:文字列の中にパターンがあるか調べるre.findall()
:すべてのマッチをリストで返すre.sub()
:マッチした文字を別の文字に置き換える
では、実際に使ってみましょう。
import re
text = "私の電話番号は090-1234-5678です"
pattern = r"\d{2,4}-\d{2,4}-\d{4}"
result = re.search(pattern, text)
print(result.group())
090-1234-5678
\d
は「数字」を表す正規表現の記号です。{2,4}
は「2文字から4文字までの繰り返し」を意味します。
3. パターンマッチングとは何か?
パターンマッチングとは、ある文字列が「決められたルール(パターン)」に合っているかを調べることです。
たとえば「abc123」という文字列が、「英字が3つ+数字が3つ」というパターンに合うか調べたりします。
import re
text = "abc123"
pattern = r"[a-z]{3}\d{3}"
if re.fullmatch(pattern, text):
print("マッチしました!")
else:
print("マッチしませんでした。")
マッチしました!
4. よく使う正規表現の記号一覧
はじめての方でも覚えやすいように、よく使う記号を以下にまとめました。
.
:なんでも1文字\d
:数字(0〜9)\D
:数字以外\w
:英数字とアンダースコア\W
:それ以外\s
:空白文字(スペース、タブなど)+
:1回以上の繰り返し*
:0回以上の繰り返し?
:0回または1回[]
:中のどれか1文字{n}
:n回の繰り返し
5. メールアドレスを見つける例
正規表現を使えば、文章の中からメールアドレスだけを見つけることも可能です。
import re
text = "お問い合わせは info@example.com までお願いします。"
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
result = re.search(pattern, text)
print(result.group())
info@example.com
このように、複雑に見えるパターンでも、分解して覚えれば使いこなせるようになります。
6. 文字の置き換え(re.subの使い方)
文章の中の文字を別の文字に一括で置き換えることもできます。
たとえば、全角の数字を半角に置き換えるなどの処理が可能です。
import re
text = "電話:090-1234-5678、FAX:03-9876-5432"
result = re.sub(r"\d{2,4}-\d{2,4}-\d{4}", "非公開", text)
print(result)
電話:非公開、FAX:非公開
7. 正規表現の使い方を練習しよう
実際に自分で文字列を作って、どんな文字がマッチするのかを試してみましょう。文字列を変更しながら何度も実行することで、自然に身についてきます。
初心者の方は、まずは re.search()
や re.findall()
を中心に、パターンマッチングの感覚をつかむことから始めましょう。