Pythonの正規表現入門!reモジュールを使った文字列パターンマッチングを学ぼう
生徒
「先生、Pythonで文章の中から特定の文字や言葉を探したいんですが、何か良い方法はありますか?」
先生
「Pythonには『正規表現(せいきひょうげん)』という便利な方法があります。文字列のパターンを指定して、複雑な検索や抽出ができるんですよ。」
生徒
「正規表現ってなんだか難しそうですが、初心者でも使えますか?」
先生
「もちろんです!Pythonではreモジュールを使うことで、初心者でも簡単に正規表現を使って文字列を扱えるようになりますよ。一緒に学んでいきましょう!」
1. 正規表現(せいきひょうげん)とは?
正規表現とは、「特定のパターンに合った文字列」を探したり取り出したりする方法です。たとえば「電話番号」「メールアドレス」「数字だけ」「特定の単語」など、決まった形の文字列を探すときに便利です。
例えば、「数字だけを見つけたい」「abcで始まる単語を探したい」といった条件で検索ができます。普通の検索(たとえばinなど)よりも、もっと柔軟に探せるのが特徴です。
2. reモジュールの基本の使い方
Pythonで正規表現を使うには、まずreというモジュールを読み込む必要があります。「モジュール」とは、Pythonに最初から入っている便利な道具箱のようなものです。
import re
これでreモジュールが使えるようになります。
3. パターンにマッチする文字列を探す:re.search
re.search()は、文字列の中からパターンに合った部分を探して、最初に見つかったものを教えてくれる関数です。
import re
text = "今日は2025年6月8日です。"
result = re.search(r"\d{4}年", text)
if result:
print("見つかりました:", result.group())
見つかりました: 2025年
\dは「数字」、{4}は「4桁」という意味です。rは「生(なま)文字列」といって、特殊な記号を正しく扱うために使います。
4. すべての一致を探す:re.findall
re.findall()は、文字列の中からパターンに合ったすべての部分をリストで返してくれます。
import re
text = "電話番号は090-1234-5678と080-9876-5432です。"
numbers = re.findall(r"\d{3}-\d{4}-\d{4}", text)
print(numbers)
['090-1234-5678', '080-9876-5432']
このように、正規表現を使えば文章の中から電話番号を自動で見つけ出すことができます。
5. 特定のパターンで置き換える:re.sub
re.sub()は、見つけたパターンを別の文字に置き換えるために使います。
import re
text = "ユーザーのパスワードは123456です。"
new_text = re.sub(r"\d{6}", "******", text)
print(new_text)
ユーザーのパスワードは******です。
このように、個人情報などを置き換える処理も簡単にできます。
6. よく使う正規表現の記号まとめ
\d:数字(0〜9)\w:英数字とアンダーバー(a〜z, A〜Z, 0〜9, _)\s:空白文字(スペース、タブ、改行など).:任意の1文字*:直前の文字が0回以上+:直前の文字が1回以上?:直前の文字が0回または1回[]:中のどれか1文字():グループ化^:行の先頭$:行の末尾
これらを組み合わせて、自由にパターンを作ることができます。
7. 正規表現はどんなときに使う?
正規表現は、次のようなときに役立ちます。
- メールアドレスのチェック
- 電話番号や郵便番号の抽出
- 数字だけを取り出す処理
- 不適切な単語のフィルタリング
- データから特定の情報を探す自動処理
手作業で探すと大変な作業を、自動で素早くできるのが正規表現の強みです。
まとめ
Pythonの正規表現とreモジュールの基本を振り返ろう
ここまで、Pythonの正規表現について、初心者の方でも理解しやすいように、 reモジュールの基本的な使い方から、実際によく使われる関数や記号まで順番に学んできました。 正規表現は、単なる文字列検索とは違い、「決まったルールや形を持つ文字列」を柔軟に扱えるのが大きな特徴です。 Pythonで文字列処理を行う場面では、正規表現を使えるかどうかで、 処理の書きやすさや自動化のレベルが大きく変わってきます。
reモジュールを使うことで、文章の中から特定のパターンに一致する文字列を探したり、 複数の一致結果をまとめて取得したり、条件に合う部分だけを別の文字列に置き換えたりできます。 例えば、日付、電話番号、メールアドレス、数字だけのデータなど、 形式が決まっている情報を扱う場合に、正規表現はとても強力な道具になります。 普段は手作業で行っている検索やチェック作業も、Pythonと正規表現を使えば自動化できるようになります。
re.search・re.findall・re.subの使い分けが重要
正規表現を使ううえで特に重要なのが、re.search、re.findall、re.subの役割の違いです。 re.searchは、文章の中から最初に見つかった一致部分を調べたいときに使います。 re.findallは、条件に合うすべての文字列をまとめて取得したいときに便利です。 そしてre.subは、特定のパターンを別の文字列に置き換える処理に使われます。 この三つを使い分けられるようになると、Pythonでの文字列操作の幅が一気に広がります。
また、正規表現のパターンを書くときには、生文字列を表すrを付けることも大切なポイントでした。 バックスラッシュを多用する正規表現では、rを付けることで、 記号の意味が分かりやすくなり、ミスも減らせます。 初心者のうちは、短くて分かりやすいパターンから少しずつ慣れていくのがおすすめです。
正規表現の記号を知ることで表現力が高まる
正規表現では、\dや\w、\sといった記号や、 回数を指定するためのアスタリスクやプラス記号など、 多くの特別なルールが用意されています。 最初は覚えることが多く感じるかもしれませんが、 よく使う記号は限られているため、実際に使いながら覚えていけば問題ありません。 特に、数字を表す\dや、文字の回数を指定する中かっこは、 実務や学習の中で頻繁に登場します。
正規表現を理解すると、単純な文字列処理だけでなく、 入力チェックやデータの整理、ログ解析など、応用できる場面が大きく広がります。 Pythonでデータを扱う力を高めたい人にとって、 正規表現はぜひ身につけておきたい重要なスキルです。
正規表現を使ったサンプルプログラム
ここで、これまで学んだ内容をまとめた簡単なサンプルプログラムを確認してみましょう。 電話番号の抽出と置き換えを行う例です。
import re
text = "連絡先は090-1111-2222です。"
pattern = r"\d{3}-\d{4}-\d{4}"
result = re.search(pattern, text)
if result:
print("電話番号:", result.group())
masked_text = re.sub(pattern, "非公開", text)
print(masked_text)
このように、正規表現とreモジュールを組み合わせることで、 文字列の検索、抽出、置き換えをシンプルなコードで実現できます。 慣れてくると、複雑な条件でも短いコードで書けるようになります。
生徒「正規表現って難しいイメージがありましたけど、使い道がはっきりすると分かりやすいですね。」
先生「そうだね。最初は簡単なパターンから使うのが大切だよ。」
生徒「電話番号や数字を探す処理が、こんなに簡単に書けるのは驚きました。」
先生「reモジュールを使えば、文字列処理がとても効率的になるんだ。」
生徒「searchとfindall、subの違いも少しずつ分かってきました。」
先生「いい調子だね。正規表現を使いこなせるようになると、Pythonでできることがさらに増えるよ。」