スラッシュ(/…/)で囲まずに、中身だけを書いてください。
最初の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$ は別物です)
- (?=…) / (?!…)
- 直後がそれに一致する / しない位置。その部分は一致に含まれません
- \. \/ \( \[
- 記号そのものを表すには \ を前に付けます
式と文章を入れると、一致した箇所と、取り出した組がここに並びます。
パターンとフラグ(g / i / m / s / u)を指定すると、対象テキストの一致箇所に色が付きます。キャプチャグループの中身と置換の結果も同時に確認でき、書き間違えた正規表現はエラー内容を表示します。
よくある質問
どの言語の正規表現ですか?
ブラウザに内蔵された JavaScript の正規表現エンジンで動作します。基本的な書き方は Python や PHP、Ruby と共通ですが、細部(後読みの対応、フラグの名前、\A や \z の有無)は言語ごとに違います。他の言語にそのまま持っていくときは、その言語の仕様を確認してください。とくに \d が全角数字を含むかどうか、改行の扱い、名前付きグループの書き方は、言語によって異なります。
スラッシュで囲んで書いてもいいですか?
囲まずに中身だけを書いてください。/abc/g のように書くと、スラッシュ自体を探す正規表現として解釈されます。フラグは入力欄の下のチェックで指定します。エディタや設定ファイルからパターンを持ってくるときは、前後のスラッシュと末尾のフラグ文字を外してから貼り付けてください。
一致が0件のとき、どこを見ればいいですか?
まずフラグの i(大小の区別)と m(^ と $ の意味)を確認してください。次に、記号を \ でエスケープしているか(. や ( はそのままでは別の意味になります)、全角と半角が混ざっていないかを確認します。パターンを短くして、どこから一致しなくなるかを切り分けるのが確実です。先頭の数文字だけを書いて一致することを確かめ、そこから1つずつ条件を足していくと、どの部分が原因かがはっきりします。
一致が多いと打ち切られるのはなぜですか?
表示できる件数に上限(500件)を設けているためです。1文字ずつ一致するパターンでは件数が膨大になり、すべてを画面に出すと操作できなくなります。件数の上限に達した場合はその旨を表示します。置換の結果は打ち切りの影響を受けず、全体に適用されます。また一覧に並べるのは先頭50件までですが、色分けは打ち切りまでのすべての一致に付きます。
入力した内容は送信されますか?
送信されません。照合も置換もブラウザ内で完結します。ログやメールの本文など、外部の正規表現サイトに貼りにくい内容でもそのまま扱えます。パターン自体も送信されないため、社内の識別子の形を含んだ正規表現でも、そのまま試せます。