正規表現の解説(パターンを要素ごとに分解)
読み解きたい正規表現を貼り付けると、文字クラス・量指定子・グループ・先読み/後読み・アンカー・エスケープ・フラグといった構文要素に分解し、1要素ずつ日本語で説明します。JavaScriptの正規表現構文に対応し、文法エラーは位置つきで指摘します。このツールはパターンを解説するだけで、テキストへのマッチは行いません。実際に試すには 正規表現テスター、よく使うパターンは 正規表現パターン集 をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
使い方
- 「正規表現パターン」欄に解説したいパターンを入力します(/パターン/gi 形式で貼り付けてもかまいません)。
- フラグが必要なら「フラグ」欄に g i m s u v y などを入力します。
- 下に表示される構成要素の一覧で、各部分の意味とネスト構造を確認します。
- 「説明をコピー」で解説をテキストとして保存できます。「サンプルを入力」で例を試せます。
注意点
- JavaScript(ECMAScript)の正規表現構文を対象にしています。PCRE・Python・Javaなど他の言語では、一部の構文(所有量指定子、条件式、\A \z など)の意味や可否が異なります。
- このツールはパターンの意味を説明するだけで、テキストへの一致判定は行いません。動作の確認には正規表現テスターを使ってください。
- 構文エラーは位置(先頭を1文字目として数えます)つきで表示します。パーサーが見逃した不正は、ブラウザの RegExp が返すメッセージで補います。
- uフラグやvフラグを付けると構文が厳格になり、フラグなしでは通るパターン(例: 不要なエスケープ \a)がエラーになります。
- ネストしたグループや文字クラスの中身は、字下げして表示します。量指定子は、直前の1要素(グループなら閉じ括弧まで)にかかります。
用語解説
量指定子(グリーディ/レイジー)
* + ? {n,m} など、直前の要素の繰り返し回数を決める記号です。通常はできるだけ多く一致する(最長一致)が、後ろに ? を付けるとできるだけ少なく一致する(最短一致)になります。
先読み・後読み
文字を消費せずに、直後(先読み)や直前(後読み)の内容を条件として確認する構文です。(?=…) (?!…) (?<=…) (?<!…) の4種類があります。
キャプチャグループ
( ) で囲んだ部分に一致した文字列を記憶する仕組みです。番号(左の開き括弧から順に1,2,…)や名前で、後方参照や置換から取り出せます。記憶が不要なら (?:…) を使います。
アンカーと単語境界
^ $ \b \B のように、文字ではなく位置に一致する要素です。長さ0で、文字を消費しません。
Unicodeプロパティエスケープ
\p{Letter} や \p{Script=Hiragana} のように、Unicodeの文字の性質で文字を指定する構文です。uまたはvフラグが必要です。
よくある質問
このツールは正規表現のマッチ判定もできますか?
いいえ、パターンを構文要素に分解して意味を説明するだけで、テキストへの一致判定は行いません。実際の入力で試すときは正規表現テスターを使ってください。
貪欲(グリーディ)と最短一致(レイジー)の違いは何ですか?
* + {n,m} などの量指定子は、通常できるだけ長く一致します(貪欲)。後ろに ? を付けた *? +? {n,m}? はできるだけ短く一致します(最短一致)。解説では最短一致の量指定子に注記を付けて区別します。
PCREやPythonの正規表現も解説できますか?
JavaScript(ECMAScript)の構文が対象です。共通する基本要素は同じ意味ですが、所有量指定子 a++、アトミックグループ (?>…)、条件式、\A \z などはJavaScriptにないため、エラーまたは別の意味として扱われます。
エラーの「位置」はどう数えますか?
パターンの先頭を1文字目として数えた位置で、エラーの原因になった文字をハイライト表示します。閉じていない括弧や文字クラスは、開いた側の位置を示します。
uフラグを付けるとエラーになるのはなぜですか?
uフラグ(vフラグも同様)を付けると構文が厳格になり、不要なエスケープ(\a など)や単独の { ] } がエラーになります。反対に \p{…} や \u{…} はこのモードでのみ使えます。
このページをシェア
