正規表現テスター
ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。
パターンとフラグ(g / i / m / s / u)を指定すると、対象テキストの一致箇所に色が付きます。キャプチャグループの中身と置換の結果も同時に確認でき、書き間違えた正規表現はエラー内容を表示します。
入力
スラッシュ(/…/)で囲まずに、中身だけを書いてください。
最初の1件で止めず、すべての一致を探します。
英字の大文字と小文字を区別しません。
^ と $ が、文全体ではなく各行の先頭・末尾に一致するようになります。
通常は改行に一致しない . が、改行にも一致するようになります。
サロゲートペア(絵文字や一部の漢字)を1文字として扱い、\u{1F600} のような書き方が使えます。
$1 $2 … でキャプチャグループ、$& で一致全体、$<名前> で名前付きグループを参照できます。$ そのものを書くには $$ とします。
よく使う書き方
- .
- 改行以外の任意の1文字(s フラグを付けると改行にも一致)
- \d / \D
- 数字1文字 / 数字以外の1文字
- \w / \W
- 英数字とアンダースコア1文字 / それ以外。日本語は \w に含まれません
- \s / \S
- 空白(スペース・タブ・改行)1文字 / それ以外
- [abc] / [^abc]
- a か b か c のどれか1文字 / それら以外の1文字
- [ぁ-ん] / [ァ-ヶ] / [一-龠]
- ひらがな / カタカナ / 漢字の範囲を文字クラスで指定する書き方
- a* / a+ / a?
- a が0回以上 / 1回以上 / 0回か1回
- a{2} / a{2,} / a{2,4}
- a がちょうど2回 / 2回以上 / 2回から4回
- *? / +?
- 最短一致。既定は最長一致なので、<.+> は行全体を飲み込みます
- ^ / $
- 先頭 / 末尾。m フラグを付けると各行の先頭・末尾になります
- \b
- 単語の境界。\bcat\b は concatenate に一致しません
- (…) / (?:…)
- グループ化して取り出す / 取り出さずにまとめるだけ
- (?<name>…)
- 名前付きグループ。置換では $<name> で参照します
- a|b
- a または b。範囲は括弧で区切ります(^(a|b)$ と ^a|b$ は別物です)
- (?=…) / (?!…)
- 直後がそれに一致する / しない位置。その部分は一致に含まれません
- \. \/ \( \[
- 記号そのものを表すには \ を前に付けます
出力
式と文章を入れると、一致した箇所と、取り出した組がここに並びます。
関連するツール
ツール一覧特長
- 一致の範囲が目で見える
- どこからどこまでが一致したのかを、対象テキストの上で色分けして表示します。隣り合う一致は色を交互に変えているため、1件なのか複数件なのかも区別できます。想定より広く取れている、あるいは狭く取れているという食い違いは、件数だけを見ていても気づけません。一覧には一致の開始位置も出しているため、色分けを省いた長いテキストでも、どこに当たったかを追えます。
- キャプチャグループの中身を出す
- 一致した文字列だけでなく、括弧で取り出した各グループの内容を番号と名前つきで一覧にします。「一致はするのにグループが空になる」といった詰まり方の原因を、その場で確認できます。どの選択肢も通らなかったグループは、空文字とは区別して「一致なし」と表示します。
- 書き間違えても止まらない
- 括弧が閉じていないなど、書きかけの正規表現は不正な状態になります。その場合もページは動き続け、ブラウザが返したエラー内容をそのまま表示します。書き上がるまでのあいだ画面が消えたり、直前の結果が残ったままになったりすることはありません。
使い方
パターンとフラグを入れる
正規表現の欄に、スラッシュで囲まずに中身だけを書きます。その下のフラグから、全体を探す g、大小を無視する i などを選びます。「例を入れる」を押すと、日付を取り出すパターンと例文が入ります。
対象のテキストを貼り付ける
対象のテキスト欄に検査したい文章を入れます。一致した箇所に色が付き、一致の件数と、位置・一致した文字列・キャプチャグループの一覧が出ます。
置換を試す
置換後の文字列の欄に $1 や $& を使った書き方を入れると、置換の結果がその下にすぐ出ます。結果はコピーボタンで持ち出せます。
正規表現でつまずくところ
- 既定は「最長一致」
- * や + は、条件を満たす範囲でできるだけ長く取ろうとします。そのため <.+> と書くと、1つのタグではなく行の最初の < から最後の > までを飲み込みます。最短で止めたい場合は <.+?> のように ? を付けてください。これは正規表現で最も多い誤解です。もう一つの書き方として、[^>]+ のように「終わりの記号以外」を並べる方法もあります。こちらは後戻りが起きにくく、長い文章に対しても速く動きます。最長一致か最短一致かは、同じパターンでも対象のテキスト次第で結果が変わるため、実際の文章で確かめるのが確実です。
- \w と \d は日本語を想定していない
- \w は英数字とアンダースコアだけで、ひらがな・カタカナ・漢字は含みません。\d も原則として半角数字です。日本語を対象にするときは [ぁ-ん]、[ァ-ヶ]、[一-龠] のように範囲で書くか、\S(空白以外)などで代用します。全角の数字や英字も \d や \w には含まれません。全角と半角が混ざったテキストを扱うときは、先に表記をそろえておくほうが確実です。
- g フラグは「状態」を持つ
- g を付けた正規表現オブジェクトは、前回どこまで探したかを内部に覚えています(lastIndex)。そのため同じオブジェクトを使い回して test() を繰り返すと、true と false が交互に返るという不可解な動きをします。プログラムに書き写すときは、毎回作り直すか lastIndex を戻してください。このページでは照合のたびに新しいオブジェクトを作っているため、同じ入力なら常に同じ結果になります。なお g を外すと、一致は最初の1件だけになり、置換も1か所しか行われません。
- 書き方によっては極端に遅くなる
- (a+)+$ のように繰り返しの中に繰り返しがある形は、一致しない入力に対して試行回数が爆発的に増え、数十文字で処理が返らなくなることがあります。入力が長い場合にこのページが自動実行を止めるのはこのためです。繰り返しの入れ子は避け、文字クラスで限定するのが安全です。外部から受け取った文字列をそのまま正規表現として実行する作りは、この性質のために攻撃の入口になります。利用者の入力をパターンに使う場合は、必ず内容を確かめてください。このページで入力が大きいときに自動実行を止めているのも、同じ理由によるものです。
よくある質問
- どの言語の正規表現ですか?
- ブラウザに内蔵された JavaScript の正規表現エンジンで動作します。基本的な書き方は Python や PHP、Ruby と共通ですが、細部(後読みの対応、フラグの名前、\A や \z の有無)は言語ごとに違います。他の言語にそのまま持っていくときは、その言語の仕様を確認してください。とくに \d が全角数字を含むかどうか、改行の扱い、名前付きグループの書き方は、言語によって異なります。
- スラッシュで囲んで書いてもいいですか?
- 囲まずに中身だけを書いてください。/abc/g のように書くと、スラッシュ自体を探す正規表現として解釈されます。フラグは入力欄の下のチェックで指定します。エディタや設定ファイルからパターンを持ってくるときは、前後のスラッシュと末尾のフラグ文字を外してから貼り付けてください。
- 一致が0件のとき、どこを見ればいいですか?
- まずフラグの i(大小の区別)と m(^ と $ の意味)を確認してください。次に、記号を \ でエスケープしているか(. や ( はそのままでは別の意味になります)、全角と半角が混ざっていないかを確認します。パターンを短くして、どこから一致しなくなるかを切り分けるのが確実です。先頭の数文字だけを書いて一致することを確かめ、そこから1つずつ条件を足していくと、どの部分が原因かがはっきりします。
- 一致が多いと打ち切られるのはなぜですか?
- 表示できる件数に上限(500件)を設けているためです。1文字ずつ一致するパターンでは件数が膨大になり、すべてを画面に出すと操作できなくなります。件数の上限に達した場合はその旨を表示します。置換の結果は打ち切りの影響を受けず、全体に適用されます。また一覧に並べるのは先頭50件までですが、色分けは打ち切りまでのすべての一致に付きます。
- 入力した内容は送信されますか?
- 送信されません。照合も置換もブラウザ内で完結します。ログやメールの本文など、外部の正規表現サイトに貼りにくい内容でもそのまま扱えます。パターン自体も送信されないため、社内の識別子の形を含んだ正規表現でも、そのまま試せます。
スポンサーリンク