正規表現テスター(チェック・置換・解説)

正規表現と文章を入れると、マッチした場所をその場で色分けします。キャプチャグループの中身、置換・分割の結果、パターンの日本語の解説まで1画面で確かめられます(JavaScript の正規表現で動きます)。

入力するたびに自動で検索します
/ /
よく使うパターン:

黄色と青が交互にマッチした部分です(隣り合うマッチを見分けるため)。オレンジの縦線は長さ0のマッチ(^ や \b などの位置だけのマッチ)。↵ は改行です。マッチをクリックすると一覧の行に移動します。

早見表(よく使う記号)
.改行以外の任意の1文字
\d数字(0〜9、半角のみ)
\w半角英数字と _
\s空白(全角スペース・改行を含む)
\D \W \Sそれぞれの「以外」
\b単語の境目(英数字の前後)
[abc]a・b・c のどれか1文字
[^abc]a・b・c 以外の1文字
[a-z]a から z までの1文字
^ $先頭・末尾(m で各行)
*0回以上
+1回以上
?0回か1回
{3}ちょうど3回
{2,5}2〜5回
*? +?できるだけ短く(最小一致)
a|ba または b
( )グループ(あとで $1 で使える)
(?: )番号を付けないグループ
(?<y> )名前付きグループ
(?= )後ろに続く(先読み)
(?! )後ろに続かない
(?<= )前にある(後読み)
\11番のグループと同じ文字列
\p{Script=Han}漢字(u が必要)
\.記号そのもの(\ で打ち消す)

このツールでできること

正規表現(せいきひょうげん)は、「3桁の数字、ハイフン、4桁の数字」のような文字の並びの決まりを短い記号で書き、文章の中から当てはまる部分を探したり置き換えたりする仕組みです。プログラミングだけでなく、テキストエディタの検索・置換、Excel や Google スプレッドシートの関数(REGEXMATCH など)、アクセス解析のフィルタ、メールの振り分けルールなどでも使われています。

便利な反面、書いたパターンが思ったとおりに動くかは、試してみないと分かりません。このツールでは、パターンと文章を入れるだけで、どこにマッチしたかを色で示し、カッコで囲んだ部分(キャプチャグループ)に何が入ったかを位置つきで一覧にします。置換したときの結果や、パターンの各部品の意味も同じ画面で確認できるので、「なぜマッチしないのか」を探す手間が減ります。入力した内容はブラウザの中だけで処理し、外部には送りません。

使い方

  1. 「正規表現」の欄にパターンを入れます。前後の / は入れません。迷ったら「よく使うパターン」のボタンから選ぶと、例文と一緒に入ります。
  2. 必要に応じてフラグを選びます。初期状態の g は「すべてのマッチを探す」です。
  3. 「テストする文章」に、試したい文章を貼り付けます。マッチした部分がすぐ下に色付きで表示されます。
  4. 「マッチ一覧」で、各マッチとグループの中身・位置(何文字目か、何行目か)を確認します。
  5. 置き換えたいときは「置換」タブで置換後の文字列を入れます。$1 でグループの中身を差し込めます。
  6. 意図どおりに動いたら、「コード」タブから JavaScript や Python のコードとしてコピーできます。

知っておくと便利なこと

日本語の文字を指定するときの落とし穴

ひらがなを [ぁ-ん] と書くことが多いですが、これには長音の「ー」が入りません(「ー」はカタカナの範囲の文字です)。「らーめん」をひとまとまりにしたいなら [ぁ-んー] とします。カタカナは [ァ-ヶー]、半角カタカナは [ヲ-゚] です。漢字は [一-龠] と書く例をよく見かけますが、「々」や一部の漢字がもれるため、u フラグを付けて \p{Script=Han} と書くほうが確実です。

\d は全角数字にマッチしない(JavaScript の場合)

JavaScript の \d は半角の 0〜9 だけです。一方、Python 3 の re では、文字列に対する \d が全角数字「123」などにもマッチします。言語によって結果が変わる代表例なので、全角数字も含めたいときは [0-90-9] のように明示すると、どの言語でも同じ動きになります。

「できるだけ長く」と「できるだけ短く」

* や + は、マッチできる範囲でできるだけ長く取ります(貪欲マッチ)。たとえば <.+> で HTML のタグを探すと、<b>太字</b> 全体が1つのマッチになります。後ろに ? を付けた <.+?> にすると、できるだけ短く取るので、タグが1つずつに分かれます。

処理が終わらないパターンに注意

(a+)+$ のように繰り返しを入れ子にすると、マッチしない文章で試せる組み合わせが爆発的に増え、処理が何秒も何分も終わらなくなることがあります(バックトラックの爆発、ReDoS とも呼ばれます)。このツールは検索を別の処理(Web Worker)で行い、2秒を超えたら打ち切って知らせるので、画面が固まりません。打ち切られたパターンは、本番のプログラムでも危険な可能性があります。

よくある質問

どのプログラミング言語の正規表現に対応していますか?
お使いのブラウザの JavaScript の正規表現エンジンで動きます。基本的な書き方は Python・PHP・Ruby・Java などとほぼ共通ですが、名前付きグループの書き方、\d の範囲、後読みで使える書き方などに違いがあります。最終的には使う環境でも確かめてください。
g フラグを外すとどうなりますか?
最初に見つかった1件だけがマッチになり、置換も最初の1か所だけになります。JavaScript の match や replace と同じ動きです。
改行コードは区別されますか?
入力欄に貼り付けた文章の改行は、ブラウザの仕様で LF(\n)にそろえられます。Windows の CRLF を前提にした \r\n はマッチしないことがあるので、\r?\n と書いておくと安全です。
入力した文章はどこかに保存されますか?
サーバーには一切送りません。次に開いたときのために、最後に入力したパターンと文章をこの端末のブラウザ(localStorage)にだけ保存します。「この正規表現のリンクをコピー」で作るリンクにも、テストする文章は入りません。