正規表現テスター
正規表現をリアルタイムでテスト・デバッグ。マッチ箇所を即座にハイライト表示し、詳細なマッチ情報を確認できます。
//gm
よく使うパターン:
関連ツール
正規表現とは?
正規表現(regex)は、テキスト内の文字の組み合わせにマッチするパターンです。超強力な「検索」機能と考えてください。
Ctrl+Fは正確なテキストを見つけますが、正規表現はパターンを見つけます:
- ドキュメント内のすべてのメールアドレス
- あらゆる形式の電話番号
- 形式に関係なく日付
- 「un-」で始まる単語
すべてのプログラマーは最終的に正規表現が必要になります。一生役立つスキルです。
基本構文
リテラル文字
ほとんどの文字はそのままマッチ:helloは「hello」にマッチ
特殊文字(メタ文字)
| 文字 | 意味 | 例 |
|---|---|---|
. | 任意の1文字 | h.tは「hat」「hit」「hot」にマッチ |
* | 直前の0回以上 | ab*cは「ac」「abc」「abbc」にマッチ |
+ | 直前の1回以上 | ab+cは「abc」「abbc」にマッチ(「ac」は不可) |
? | 直前の0回か1回 | colou?rは「color」「colour」にマッチ |
^ | 文字列/行の先頭 | ^Helloは「Hello world」にマッチ |
$ | 文字列/行の末尾 | world$は「Hello world」にマッチ |
特殊文字をそのままマッチさせるには、バックスラッシュでエスケープ:\.は実際のピリオドにマッチ。
文字クラス
文字クラスは、セットから任意の1文字にマッチします:
| パターン | マッチ | 例 |
|---|---|---|
[abc] | a、b、またはc | [cb]at → 「cat」「bat」 |
[a-z] | 小文字のアルファベット | [a-z]+ → 「hello」 |
[A-Z] | 大文字のアルファベット | [A-Z][a-z]+ → 「Hello」 |
[0-9] | 数字 | [0-9]{3} → 「123」 |
[^abc] | a、b、c以外 | [^0-9]+ → 「hello」 |
ショートハンドクラス
| 省略形 | 同等 | 意味 |
|---|---|---|
\d | [0-9] | 数字 |
\D | [^0-9] | 数字以外 |
\w | [a-zA-Z0-9_] | 単語文字 |
\s | [ \t\n\r\f] | 空白 |
量指定子
量指定子はパターンの繰り返し回数を指定します:
| 量指定子 | 意味 | 例 |
|---|---|---|
* | 0回以上 | a* → 「」「a」「aaa」 |
+ | 1回以上 | a+ → 「a」「aaa」(「」は不可) |
? | 0回か1回 | a? → 「」「a」 |
{3} | ちょうど3回 | a{3} → 「aaa」 |
{2,4} | 2〜4回 | a{2,4} → 「aa」「aaa」「aaaa」 |
デフォルトでは、量指定子は貪欲です — できるだけ多くマッチします。?を追加すると非貪欲に:.*?は最小限にマッチ。
グループと選択
括弧でグループを作成:
(abc)+ # 「abc」「abcabc」などにマッチ
(Mr|Mrs|Ms) # 「Mr」「Mrs」「Ms」にマッチ
キャプチャグループはマッチした内容を記憶:
(\d{3})-(\d{4})
エリアコードと番号を別々にキャプチャ。
よく使う正規表現パターン
📧 メール(簡略版)
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
📱 日本の電話番号
0\d{1,4}-\d{1,4}-\d{4}
📅 日付(YYYY-MM-DD)
\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])
正規表現のヒント
1. シンプルに始める 正規表現を少しずつ構築。追加するたびにテスト。
2. 可能な限り具体的に
\d{4}は長さが分かっている場合、\d+より良い。
3. アンカーを使用
^と$で部分マッチを防止。^\d{5}$は「12345」にマッチ、「123456」は不可。
4. エッジケースをテスト
- 空文字列
- 非常に長い入力
- 特殊文字
- Unicode文字
5. 正規表現を使わないべき時を知る
- HTML/XMLのパース(パーサーを使用)
- 複雑なネスト構造
- 単純な文字列メソッドで十分な場合