🔍 正規表現テスター の使い方
正規表現パターンとテキストを入力するだけで、マッチした箇所・グループ・文字位置を即座に確認できます。i(大文字小文字無視)・m(複数行)・s(単一行)フラグに対応し、複雑な条件のマッチングも簡単に検証できます。Python の re モジュールを利用しているため、先読み・後読みアサーションや名前付きグループなど高度な機能も使用可能です。メールアドレス・電話番号・URL など実用的なパターンをそのまま試せるパターン集も掲載しています。
📌 このツールでできること
- 正規表現パターンをテキストに対して即座にテスト
- マッチした全箇所を一覧表示(マッチ文字列・開始位置・終了位置)
- キャプチャグループ(括弧)の内容を番号順に確認
- 名前付きグループ(
(?P<name>...))の内容を確認 - i(大文字小文字無視)・m(複数行)・s(単一行ドット)フラグに対応
- 先読み(
(?=...))・後読み((?<=...))アサーションの動作確認 - 量詞(
*,+,?,{n,m})の貪欲・非貪欲マッチのテスト - マッチ件数をカウント表示
- パターンエラー(構文誤り)を即座にフィードバック
🚀 使い方
-
正規表現パターンを入力
「正規表現パターン」欄にテストしたいパターンを入力します。例:
(\d{4})-(\d{2})-(\d{2}) -
フラグを設定(任意)
「フラグ」欄に使用するフラグを入力します。
i(大文字小文字無視)、m(複数行モード)、s(単一行モード)を組み合わせ可能です。 -
テストテキストを入力
「テストテキスト」欄にマッチングしたいテキストを入力します。
-
「テスト実行」をクリック
マッチ結果が表示されます。各マッチの文字列・開始位置・終了位置・グループが確認できます。
📊 活用例
日付・時刻の抽出
ログファイルやテキストから日付・時刻を抽出する際に役立ちます。(\d{4})-(\d{2})-(\d{2}) パターンで年・月・日をキャプチャグループで個別に取得できます。サーバーログの解析やデータクレンジング作業を大幅に効率化できます。
フォームバリデーションの開発
メールアドレス・電話番号・郵便番号などの入力値検証パターンを実装前に本ツールで十分テストできます。[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} のようなパターンをサンプルデータで動作確認してから実装に組み込むことで、バグの少ないバリデーションを作成できます。複数のテストケースを一度に確認できるため開発効率が高まります。
ログ解析・データクレンジング
アクセスログ・エラーログから特定の IP アドレスやエラーパターンを抽出したい場合に活用できます。複数行テキストに対して m フラグを使用することで行単位のマッチングが可能になります。抽出したデータを集計・可視化するための前処理として正規表現は欠かせません。
テキスト置換パターンの検証
HTML タグの除去(<[^>]+>)や不要な空白の削除(\s+)など、置換操作のパターンを本ツールで事前検証できます。置換前後の文字列を確認してから実装することで、意図しないデータ破損を防げます。grep / sed / Python スクリプトへ移植する前の動作確認としても最適です。
📋 よく使うパターン集
コピーしてそのまま使える、実務でよく登場するパターンをまとめました。
| 用途 | パターン例 |
|---|---|
| 日付(YYYY-MM-DD) | \d{4}-\d{2}-\d{2} |
| メールアドレス | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} |
| 電話番号(日本) | 0\d{1,4}-\d{1,4}-\d{4} |
| 郵便番号 | \d{3}-\d{4} |
| URLの抽出 | https?://[\w/:%#\$&\?\(\)~\.=\+\-]+ |
| IPアドレス | \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b |
| 半角英数字のみ | ^[a-zA-Z0-9]+$ |
| 空行の削除 | ^\s*$(複数行モード m と組み合わせ) |
| HTMLタグ除去 | <[^>]+> |
| クレジットカード番号(簡易) | \d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4} |
🔬 技術的背景 / 仕組み
Python の re モジュールについて
本ツールはサーバーサイドで Python 標準ライブラリの re モジュールを使用しています。re.finditer() を呼び出すことで、テキスト内のすべてのマッチを順番に取得し、マッチ文字列・開始位置・終了位置・グループを返します。Python の正規表現エンジンは NFA(非決定性有限オートマトン)ベースであり、バックトラッキングを行います。
正規表現の主な構文要素
正規表現にはいくつかの重要な構文カテゴリがあります。量詞(*・+・?・{n,m})は繰り返し回数を指定します。デフォルトは「貪欲マッチ」(できるだけ多くマッチ)で、? を付けると「非貪欲マッチ」になります。文字クラス([a-z]・\d・\w・\s)は特定の文字集合を表します。アンカー(^・$・\b)は位置を指定します。
先読み・後読みアサーション
アサーションは文字を消費せずに位置条件を指定します。先読み((?=...))は「直後にパターンが続く位置」にマッチし、後読み((?<=...))は「直前にパターンがある位置」にマッチします。否定版は (?!...) と (?<!...) です。例:(?<=\$)\d+ は「$ の後に続く数値」だけを抽出します。
JavaScript / PCRE との違い
Python の re は PCRE(Perl Compatible Regular Expressions)と概ね互換性がありますが、いくつかの差異があります。Python では文字列境界に \A(文字列先頭)と \Z(文字列末尾)が使えます。名前付きグループは Python 式((?P<name>...))で、PCRE 式((?<name>...))も使用可能です。JavaScript の d フラグ(インデックス取得)や v フラグには非対応です。
📚 関連書籍 PR
※ 本リンクはアフィリエイト広告を含みます。
❓ よくある質問
グローバルマッチ(g フラグ)はありますか?
本ツールでは常に全マッチを検索します(Python の finditer 相当)。gフラグを指定する必要はありません。
名前付きグループ((?P<name>...))は使えますか?
Python正規表現の名前付きグループ構文も使用できます。ただし、グループ内容はインデックス順で表示されます。
JavaScriptやPCREの正規表現と違いはありますか?
本ツールはPythonのreモジュールを使用しています。一部の記法(例:\A, \Z, 先読み・後読みなど)はPython固有です。JavaScriptやPCREとは一部異なる場合があります。
フラグ(i / m / s)はどう指定しますか?
「フラグ」欄に使用したいフラグの文字を入力してください。例えば大文字小文字を無視して複数行モードも有効にしたい場合は im と入力します。i(大文字小文字無視)・m(^$ が各行の先頭・末尾にマッチ)・s(. が改行文字にもマッチ)の組み合わせが可能です。
先読み・後読みアサーションは使えますか?
使えます。Python の re モジュールは先読み((?=...)・(?!...))と後読み((?<=...)・(?<!...))の両方をサポートしています。例えば \d+(?= 円) は「円」の前にある数値だけを抽出します。
パフォーマンスに問題がある正規表現とは?
「壊滅的なバックトラッキング」を引き起こすパターンは、入力サイズが大きいと処理時間が指数関数的に増加します。代表的なパターンは (a+)+ や (a*)* のように量詞がネストされているものです。入力が長い場合や本番環境で使用するパターンは、事前に十分なテストを行ってください。