正規表現テスター
フラグ
正規表現を入力し、テスト対象のテキストを貼り付けると、テスターがパターンを実行し、見つかったすべてのマッチを一覧表示します。各結果はマッチの開始位置と各キャプチャグループの内容を示すので、パターンが何を捉えたのかを正確に確認できます。大文字小文字を区別しない、複数行、dotall のフラグを切り替えて、パターンの挙動を変えられます。
正規表現のテスト方法
-
1
パターンを入力する
区切り文字なしで式を入力すると、テスターが `/ /` で囲みます。無効なパターンは、静かに失敗する代わりに分かりやすいエラーメッセージを表示します。
-
2
フラグを選ぶ
必要に応じてマッチさせるため、`i`(大文字小文字を区別しない)、`m`(複数行)、`s`(dotall)を有効にします。
-
3
テストテキストを貼り付ける
検索したいテキストを追加します。テスターは全体を走査し、最初の1件だけでなくすべてのマッチを見つけます。
-
4
マッチを調べる
各マッチは、テキスト内の位置(offset)、完全一致、そして番号付きの各キャプチャグループを表示します。
テスターが示してくれること
パターンを頭の中で、あるいは手早い grep で走らせると、一致するかどうかは分かります。テスターはさらに次を示します。
- 各マッチとその位置。 常にテキスト全体を検索し、各マッチをその開始位置の文字オフセットとともに報告します。
- どのグループが何を捉えたか。 各マッチは完全一致と番号付きのキャプチャグループに分解されるので、ある
(...)が期待どおりの部分を捉えたか確認できます。 - フラグが何を変えるか。
i、m、sを有効にして再テストすると、大文字小文字の無視・複数行・dotall が結果をどう変えるかが分かります。
フラグの早わかり
| フラグ | 名称 | 何を変えるか |
|---|---|---|
i |
大文字小文字を区別しない | A は a にも一致し、その逆も同様 |
m |
複数行 | ^ と $ がテキスト全体だけでなく各行の先頭と末尾で一致する |
s |
Dotall | . が改行文字にも一致する |
マッチは常にグローバルです。テスターはテキスト内のすべてのマッチを返すので、別途「global」フラグを設定する必要はありません。パターンは Unicode 対応の PCRE エンジンで実行されるため、\w や \d のようなクラスは国際的なテキストでも一貫して動作します。
これが見つけやすくする、よくある正規表現の問題
| 症状 | よくある原因 |
|---|---|
| すべてを覆う巨大な1件のマッチ | .* は貪欲。.*? か [^"]* のような否定クラスを使う |
^ や $ が1回しか一致しない |
複数行テキストで m フラグが不足 |
. が改行で止まる |
s フラグが不足 |
| キャプチャグループの順序が予想外 | 入れ子の ( がグループ番号をずらす。左から右へ数える |
| パターンの実行が遅い | 重なり合う選択肢に入れ子の * や + があると、多くのバックトラッキングが起きる |
より速く安全なパターンのためのヒント
- マッチが先頭から始まるときは
^でアンカーし、エンジンが文字列全体を走査しないようにします。 - 選択(
a|b|c)より文字クラス([abc])を優先します。文字クラスは主要なエンジンのすべてで高速です。 - 終端文字が分かっているときは、貪欲な
.*を[^"]*のような否定クラスに置き換えると、バックトラッキングがなくなります。
よくある質問
PHP に組み込まれたエンジンである PCRE を使い、Unicode モードを有効にしてパターンを実行します。\d、\b、先読み・後読みなど PCRE 固有の構文は期待どおりに動作します。JavaScript、Python などの言語でパターンを使う場合は、リリース前に細かな構文の違いを確認してください。
すべてのマッチです。テスターは常にテキスト全体を検索するので、別途「global」フラグを設定する必要はありません。各マッチはテキスト内の位置とともに一覧表示されます。
はい。各マッチは完全一致と番号付きの各キャプチャグループに分解されるので、各 (...) がテキストのどの部分を捉えたか確認できます。
i はマッチを大文字小文字を区別しないようにし、m は ^ と $ を各行の境界で一致させ、s は . が改行文字に一致するようにします。オン・オフを切り替えて再テストし、結果を比較してください。
テスターは、静かにマッチ0件を返す代わりに、閉じていない角かっこや終了していないグループなど、問題を説明する分かりやすいエラーメッセージを表示します。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
JavaScript圧縮ツール
変数名のリネーム、空白の削除、デッドコードの除去、定数畳み込みでJavaScriptを圧縮し、より小さなバンドルを作成します。
EditorConfig ジェネレーター
インデント、改行コード、文字コードのルールから .editorconfig を作成し、リポジトリで使っている言語ごとに正しいセクションを追加します。Python、Go、YAML、Makefile などに対応。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
このツールは他の言語でも利用できます
- Probador de Regex [ES]
- Testeur de Regex [FR]
- Penguji Regex [ID]
- Regex-testare [SV]
- أداة اختبار Regex [AR]
- 정규식 테스터 [KO]
- Tester Regex [PL]
- Regex-tester [NL]
- Trình kiểm tra Regex [VI]
- ตัวทดสอบ Regex [TH]
- Testador de Regex [PT]
- Regex-Tester [DE]
- Тестер Regex [RU]
- Regex Test Aracı [TR]
- 正则测试器 [ZH]
- Regex Tester [EN]
- Tester di Regex [IT]