pipipipi.net

正規表現テスター

正規表現パターンをリアルタイムでテストし、マッチ結果をハイライト表示します。

//g

g=グローバル, i=大文字小文字無視, m=複数行, s=.が改行にもマッチ

テンプレート:

正規表現テスターでできること

正規表現パターンのマッチをリアルタイムでテストできるブラウザツールです。パターンを入力するたびに即座にマッチ結果が更新されるため、試行錯誤のサイクルをすばやく回せます。

主な機能は次のとおりです。マッチ箇所の黄色ハイライト表示により、テキスト内のどの部分に一致しているかを視覚的に確認できます。マッチ統計(マッチ数・平均長・カバー率)では、パターンがどの程度テキストをカバーしているかを数値で把握できます。キャプチャグループ機能では、括弧で囲んだ部分式にマッチした文字列を個別に確認できます。置換モードでは、$1$2を使ったグループ参照を含む置換後テキストを確認できます。コード生成機能では、作成したパターンをJavaScript・Python・Go・PHPの4言語のコードとして出力できます。また、Web Workerを使った非同期処理で大きなテキスト(最大1MB)に対する検索も3秒のタイムアウト保護付きで実行できます。JavaScriptの正規表現エンジンを使用しています。

使い方

パターン入力欄
正規表現パターンを入力します。/で囲まれた表示になり、右側に現在有効なフラグが表示されます。無効なパターンを入力するとエラーメッセージが表示されます。
フラグボタン(g / i / m / s)
クリックでON/OFFを切り替えます。g=グローバル検索(全マッチを返す)、i=大文字小文字無視、m=複数行モード(^/$が各行の先頭・末尾にマッチ)、s=dotAll(.が改行にもマッチ)。初期値はgのみONです。
テンプレートボタン(9種)
よく使うパターンをワンクリックで入力できます。メールアドレス、URL、郵便番号(3桁-4桁形式)、電話番号、IPアドレス、日付(YYYY-MM-DD)、時刻(HH:MM:SS)、HTMLタグ、カラーコードの9種類に対応しています。
テスト文字列入力欄
マッチを確認したいテキストを貼り付けるか入力します。マッチ箇所がリアルタイムで黄色くハイライトされます。入力サイズは1MBまで対応しています。
「置換モード」チェックボックス
ONにすると置換文字列の入力欄が表示されます。$1$2でキャプチャグループを参照できます。置換結果は緑色の背景で表示されます。
マッチ統計・個別マッチ詳細
マッチ数・平均長・カバー率の3指標が表示されます。また、各マッチの文字列・テキスト中の位置(インデックス)・キャプチャグループの値を一覧で確認できます。
コード生成
現在のパターンとフラグを使った実行コードがJavaScript・Python・Go・PHPの4言語で自動生成されます。各言語の「コピー」ボタンでクリップボードにコピーできます。
「リセット」ボタン
パターンとテスト文字列をクリアして初期状態に戻します。フラグもgのみONの初期値に戻ります。

活用シーン

  • ログファイルから特定パターンの行を抽出する — アプリケーションのエラーログやアクセスログには、特定のIPアドレス・ステータスコード・タイムスタンプが含まれます。正規表現で抽出パターンを組み立てながら、テストデータで動作確認してから本番のgrepやawkコマンドに転用できます。
  • フォームバリデーションのパターンを検証する — メールアドレス・電話番号・郵便番号のバリデーション正規表現は、エッジケースで意図しない挙動を起こしやすいです。テンプレートを起点にして自分の要件に合わせて調整しながら、複数のテストケースで一括確認できます。
  • テキストの一括置換パターンを事前確認する — コードリファクタリングやドキュメント整形で、エディタの正規表現置換を使う前にパターンと置換文字列を安全に検証できます。置換モードと$1参照を使えば、キャプチャグループを活用した複雑な置換の結果を事前に確認できます。
  • 複数言語への移植前に動作確認する — JavaScriptで動作確認したパターンをPython・Go・PHPに移植する際、コード生成機能でそれぞれの言語の構文に変換されたコードを即座に確認できます。フラグの対応関係(JavaScriptのgフラグがPythonではre.findallに対応する等)を意識せずにコードを得られます。
  • 正規表現の学習・デバッグ — パターンを少しずつ変えながらマッチ結果を確認することで、各メタ文字・量指定子の挙動を体感的に理解できます。カバー率の指標は「パターンがテキスト全体をどれだけカバーしているか」を示すため、過剰マッチや未マッチの検出にも役立ちます。

正規表現の主なメタ文字

正規表現では特別な意味を持つ文字(メタ文字)を組み合わせてパターンを記述します。代表的なものを整理しておくと、パターンを読み書きする際の参考になります。

.
改行以外の任意の1文字にマッチします。sフラグをONにすると改行にもマッチします。
* + ?
量指定子です。*=0回以上、+=1回以上、?=0または1回の繰り返しにマッチします。末尾に?を付けると最短マッチ(非貪欲)になります。
{n,m}
n回以上m回以下の繰り返しにマッチします。{3}は厳密に3回、{2,}は2回以上を意味します。
^ $
アンカーです。^=文字列(または行)の先頭、$=末尾にマッチします。mフラグと組み合わせると各行の先頭・末尾に対応します。
[abc]
文字クラスです。括弧内のいずれか1文字にマッチします。[a-z]は範囲指定、[^abc]は否定(abc以外)を表します。
(abc)
キャプチャグループです。括弧内のパターンにマッチした文字列を$1として参照できます。(?:abc)は非キャプチャグループで、参照不要な場合に使います。
\d \w \s
短縮文字クラスです。\d=数字([0-9]相当)、\w=単語構成文字([a-zA-Z0-9_]相当)、\s=空白文字。大文字(\D等)は否定になります。
\b
単語境界にマッチします。\bword\bは「word」という単語全体にのみマッチし、「password」内の「word」にはマッチしません。

フラグの意味と使い分け

正規表現のフラグは、パターンのマッチ動作を制御するオプションです。このツールでは4つのフラグに対応しています。

g(グローバル)
テキスト内の全マッチを返します。このフラグをOFFにすると最初の1件のみ返します。全件置換を行う場合はgフラグが必要です。
i(大文字小文字無視)
HellohelloHELLOを同一視してマッチします。HTML属性名やURLなど、大文字小文字が混在するデータを扱う際に使います。
m(複数行)
^$が文字列全体の先頭・末尾だけでなく、各行の先頭・末尾にもマッチするようになります。複数行のログから各行を対象に先頭・末尾パターンを検索する際に役立ちます。
s(dotAll)
.が改行文字(\n)にもマッチするようになります。複数行にわたるHTMLブロックやログエントリを.*で一括マッチする場合に使います。

関連ツール

  • 文字数カウンター — 文字数・バイト数・行数を計測します。テキストのサイズを確認してから正規表現のテストデータとして使う場合に便利です。
  • テキスト比較 — 2つのテキストの差分をハイライト表示します。正規表現による置換前後のテキストを比較して変更点を確認する際に使えます。
  • CRON式解析 — CRON式の次回実行日時を計算します。CRON式は正規表現と同様にパターン記述言語であり、両ツールを合わせて使う場面があります。

プライバシーについて

入力した正規表現パターンおよびテスト文字列はすべてブラウザ内で処理されます。サーバーへのデータ送信は行いません。アカウント登録も不要です。