【Python】正規表現を扱うre モジュール とは?主要メソッドや活用シーンをわかりやすく解説!

Pythonで文字列処理をする際に欠かせないのが、正規表現(Regex)を扱うための re モジュールです。

検索、置換、抽出、パターンマッチなど、柔軟な文字列処理を可能にするこのモジュールは、ログ解析やデータクレンジング、Webスクレイピングでも頻繁に使われます。

この記事では、Pythonの re モジュールの基本的な使い方から、主要メソッド、活用シーン、注意点まで、初心者にもわかりやすく丁寧に解説します。

re モジュールとは?

Python標準ライブラリに含まれている「正規表現モジュール」です。

と書くことで、文字列検索や置換などの正規表現機能が使えるようになります。

正規表現とは、文字列のパターンを表現するための「特殊な書き方」です。

たとえば「数字だけにマッチ」「abcから始まる文字列」などを表現できます。

具体例①:文字列から特定のパターンを抽出

たとえば、文章の中からメールアドレスだけを抽出したい時は下記のように使います。

ここで使われているのは以下の要素です:

  • \w+ :英数字の1文字以上を表す
  • @:アットマークそのもの
  • \.:ドット(. は正規表現で「任意の1文字」を意味してしまうため、バックスラッシュでエスケープが必要)
  • search():文字列の中から「最初にマッチした1つだけ」を取得
  • group():実際にマッチした文字列を取り出す

この例では 最初に見つかったメールアドレス1件だけ を取得しています。

もし複数のメールアドレスが含まれている場合は、re.findall() を使うとすべて取得できます。

具体例②:文字列の一括置換

正規表現を使えば、特定のパターンを まとめて置換 する処理も簡単です。

例えば「数字をすべて●に置き換える」というマスキング処理は以下のように書けます。

ここでのポイント:

  • \d+ :数字(1文字以上)を意味する正規表現
  • sub():パターンに一致した部分を指定文字列に置き換える

この例では「1234」という数字がすべて「●●●●」に置き換えられています。

もし「数字の桁数に応じて●の数を変えたい」なら、置換部分を "●" にし、re.sub(r"\d", "●", text) のようにすれば 1文字ずつマスク することも可能です。

主要なメソッド一覧

re モジュールにはさまざまな関数が用意されていますが、実務で特によく使うのは次のメソッドです。

それぞれの役割と、どんな場面で使うのかを簡単にまとめました。

メソッド名 機能 よく使う場面
re.search() 最初のマッチを返す 文字列中に該当パターンがあるか確認
re.match() 先頭からマッチを確認 パターンが先頭にあるか調べたいとき
re.findall() すべてのマッチをリストで取得 一括抽出(メール、電話など)
re.finditer() イテレータで全マッチを取得 マッチした位置など詳細情報が必要なとき
re.sub() 文字列の置換 検出したパターンをマスキング
re.split() 正規表現で分割 カンマやスペース以外での区切り
re.compile() パターンを事前にコンパイル パフォーマンス改善、複数回利用時

これらを理解して使い分けることで、文字列処理を効率よく柔軟に実装できます。

例えば、簡単なチェックには search、一括抽出には findall、置換には sub を使うなど、用途ごとに最適なメソッドを選ぶことが大切です。

正規表現のよく使うパターン一覧

Python の正規表現でよく使われる記号や構文をまとめました。

コードを書く時にパッと参照できるようブックマークしておくのがおすすめです!

パターン 意味
. 任意の1文字(改行を除く) a.b は "acb" にマッチ
^ 文字列の先頭 ^Hello は "Hello world" にマッチ
$ 文字列の末尾 end$ は "the end" にマッチ
* 直前の文字が0回以上繰り返される lo* は "looong" にマッチ
+ 直前の文字が1回以上繰り返される lo+ は "looooong" にマッチ
? 直前の文字が0回または1回 colou?r は "color" と "colour" にマッチ
{n} n回繰り返し \d{4} は4桁の数字にマッチ
{n,m} n〜m回の繰り返し \d{2,4} は2〜4桁の数字
[] いずれか1文字にマッチ [aeiou] は母音にマッチ
[^] 指定以外の1文字にマッチ [^0-9] は数字以外にマッチ
\d 数字と一致([0-9]) \d+ は連続する数字にマッチ
\D 非数字と一致 \D+ は数字以外にマッチ
\w 英数字またはアンダースコア \w+ は単語にマッチ
\W 非単語文字(空白や記号など) \W+ は記号やスペースにマッチ
\s 空白文字(スペース、タブなど) \s+ は連続する空白にマッチ
\S 空白以外の文字 \S+ は非空白文字列にマッチ
| OR条件(いずれかに一致) cat|dog は、「cat または dog」のどちらかにマッチ
() グループ化またはキャプチャ (\d+)-(\d+) で電話番号の区切りを分ける

※バックスラッシュを使うパターン(\d, \sなど)は、Pythonコード内では r"..." のように「raw文字列」で書くのが基本です。

たとえば、\d{4} は「4桁の数字」、^Hello は「Helloで始まる文字列」にマッチします。

複雑なパターンも、上記の記号を組み合わせることで表現できます。

活用シーン

正規表現は「複雑な文字列処理を簡潔に書ける」ことが最大の強みです。

そのため、Pythonの re モジュールは次のような実務シーンで非常によく使われます。

  • フォーム入力のバリデーション(メールアドレスや電話番号のチェック)
  • Webスクレイピング(HTMLから特定パターンのデータを抽出)
  • ログ解析(IPアドレスやエラーメッセージの抽出)
  • 文字列のクリーニング(不要な記号やスペースの除去)
  • ファイル名・パスのフィルタリング(特定拡張子だけ取得など)

特に「入力チェック」や「データ抽出」では、正規表現があるだけで処理をシンプルに書けるようになります。

日常的な業務でも活躍する場面が多いため、基本的な書き方を知っておくだけでも大きな武器になります。

注意点

正規表現は便利ですが、いくつかの落とし穴もあります。

特に初心者がつまずきやすいポイントを整理しました。

  • 正規表現の構文は非常に強力ですが、複雑になると読みづらくバグの元になります。
  • 初めて書くときは、regex101 のような正規表現可視化ツールの活用がおすすめです。
  • Pythonの raw文字列(r"")を使わないと、バックスラッシュのエスケープで混乱しやすくなります。

シンプルなパターンから少しずつ応用していくと、バグを避けながら実務で安全に活用できます。

まとめ

Python の re モジュールを使えば、文字列に対して強力で柔軟なパターン処理が可能になります。

  • re.search():1件だけ見つける
  • re.findall():すべて見つける
  • re.sub():一致部分を置換
  • re.match():先頭からマッチ

正規表現の構文と一緒に使いこなすことで、データ処理の効率が大幅にアップします。

初めての方はまず、簡単なパターン(数字やメールアドレス)から試して、徐々に応用していくのがおすすめです。

おすすめの記事