本文へスキップ
にゃんこツール

正規表現の解説(パターンを要素ごとに分解)

読み解きたい正規表現を貼り付けると、文字クラス・量指定子・グループ・先読み/後読み・アンカー・エスケープ・フラグといった構文要素に分解し、1要素ずつ日本語で説明します。JavaScriptの正規表現構文に対応し、文法エラーは位置つきで指摘します。このツールはパターンを解説するだけで、テキストへのマッチは行いません。実際に試すには 正規表現テスター、よく使うパターンは 正規表現パターン集 をご利用ください。

🔒 ブラウザ内で完結・入力データはサーバーに送信されません

使い方

  1. 「正規表現パターン」欄に解説したいパターンを入力します(/パターン/gi 形式で貼り付けてもかまいません)。
  2. フラグが必要なら「フラグ」欄に g i m s u v y などを入力します。
  3. 下に表示される構成要素の一覧で、各部分の意味とネスト構造を確認します。
  4. 「説明をコピー」で解説をテキストとして保存できます。「サンプルを入力」で例を試せます。

注意点

  • 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{…} はこのモードでのみ使えます。

このページをシェア

↑↓ 選択 Enter 開く Esc 閉じる