正規表現、分かりにくいを
ハイライトで即解決
インストール不要。パターンを入力するたびにマッチ部分がリアルタイムでオレンジ表示。 「見て理解する」体験で、正規表現が苦手な人でも確実に身につく。
無料で始める →レベル別・目的別に体系的に学習できます
Regex道場で扱う記号の早見表です。書き方を思い出したいときはここを見て、 実際に動かして確かめたくなったらレッスンを開いてください。
| 記号 | 意味 | 例 |
|---|---|---|
. | 任意の 1 文字 (改行を除く) | a.c → abc, a1c |
\d | 数字 1 文字 (0-9) | \d\d → 42 |
\w | 英数字とアンダースコア 1 文字 | \w+ → user_01 |
\s | 空白文字 (半角空白・タブ・改行) | a\sb → a b |
[abc] | 角括弧の中のいずれか 1 文字 | [aeiou] → 母音 |
[^abc] | 角括弧の中以外の 1 文字 | [^0-9] → 数字以外 |
[a-z] | 範囲指定 (小文字英字) | [A-Za-z] → 英字 |
* | 直前を 0 回以上 | ab*c → ac, abc, abbc |
+ | 直前を 1 回以上 | ab+c → abc, abbc |
? | 直前を 0 回か 1 回 | colou?r → color, colour |
{n,m} | 直前を n 回以上 m 回以下 | \d{2,4} → 12, 1234 |
^ | 行の先頭 | ^Error → 行頭の Error |
$ | 行の末尾 | \.log$ → .log で終わる |
| | いずれか (OR) | cat|dog → cat か dog |
( ) | グループ化と後方参照 | (\d{4})-(\d{2}) |
\ | 特殊文字のエスケープ | \. → 文字としての . |
正規表現は 「何の文字か」を決める部分 と 「何回繰り返すか」を決める部分 の組み合わせでできています。\d や [a-z] が前者、+ や {2,4} が後者です。 この 2 つに分けて読むだけで、長いパターンもかなり読みやすくなります。
入門コースは リテラル → 文字クラス → アンカー → 量指定子 → グループ の順に並んでいます。正規表現でつまずく原因のほとんどは 「何の文字か」と「何回繰り返すか」が混ざって読めなくなることなので、 この順番どおりに 1 つずつ確かめるのが結局いちばん早い道です。
各レッスンは解説を読む → 自分でパターンを書く → 一致箇所がその場でハイライトされる、 という流れです。うまく一致しないときは、対象文字列を短くしてから パターンを 1 記号ずつ足していくと、どこで意図とずれたかがすぐ分かります。
Regex道場は無料で使えますか?
はい。全レッスンが無料で、会員登録もインストールも不要です。ブラウザを開いてすぐに始められます。
どの言語の正規表現に対応していますか?
JavaScript の RegExp をそのまま使っています。書き方の大部分は Python・Java・PHP・Ruby・grep とも共通なので、ここで身につけた基礎はほかの言語でもほぼそのまま通用します。
* と + の違いが分かりません。
どちらも「直前の 1 文字の繰り返し」ですが、* は 0 回でもよく、+ は最低 1 回必要です。ab*c は ac にも一致しますが、ab+c は ac には一致しません。「あってもなくてもよい」なら *、「必ず 1 つはある」なら + と覚えると迷いません。
貪欲マッチ (greedy) とは何ですか?
* や + は既定でできるだけ長く一致しようとします。<.+> を <a><b> に当てると <a><b> 全体に一致してしまいます。最短で止めたいときは <.+?> のように ? を付けて非貪欲にします。
メールアドレスや日付の判定に使えますか?
使えます。日付なら \d{4}-\d{2}-\d{2}、電話番号なら \d{2,4}-\d{2,4}-\d{4} のような形が基本です。ただしメールアドレスを厳密に判定する正規表現は非常に複雑になるため、実務では「@ を含み、ドメインらしき形か」程度に留め、最終確認は確認メールの送信で行うのが一般的です。
正規表現が思ったとおりに動きません。
まず対象文字列を短くして、パターンを 1 つずつ足しながら確認するのが近道です。Regex道場はパターンを打つたびに一致箇所がハイライトされるので、どこまでが意図どおりかをその場で切り分けられます。