onlinetools.dev

正規表現テスター

マッチとグループをリアルタイムでハイライトして正規表現をテスト

ローカル実行
loading…
このツールについて

パターンを書き、サンプルテキストを貼り付けると、入力に合わせてすべてのマッチがハイライトされます — キャプチャグループ、名前付きグループ、マッチ位置は下に一覧表示されます。テスターは JavaScript の RegExp エンジンを使うため、後読み、名前付きグループ、Unicode プロパティエスケープを含め、挙動は Node.js とブラウザーの動作と完全に一致します。

フラグは文字ごとに切り替えられ(g、i、m、s、u、y、d)、パターンはキー入力のたびにコンパイルされます。構文エラーはボタンを押した後ではなく、エンジン自身のメッセージとともに即座に表示されます。a* のような空マッチのパターンは安全に処理され、暴走する入力は 10,000 マッチで打ち切られるため、はぐれた .* がタブを固まらせることはありません。

正規表現の方言はエンジンごとに異なります — ここで動くパターンでも、PCRE、RE2、Python の re モジュールでは調整が必要な場合があります。主な差異は後読みのサポート、強欲な量指定子、インラインフラグです。

よくある質問

このテスターはどの正規表現フレーバーを使っていますか?
ECMAScript(JavaScript)で、あなた自身のブラウザーの実装です。先読み・後読み、名前付きキャプチャグループ、後方参照、\p{Letter} のような Unicode プロパティエスケープ(u フラグ付き)をサポートします。強欲な量指定子や再帰といった PCRE 専用の構文はサポートしません。
なぜパターンがすべてにマッチする / 何にもマッチしないのですか?
古典的な原因は 2 つです。エスケープされていないメタ文字(. は任意の文字にマッチします — リテラルのドットには \. とエスケープします)、あるいは頭の中で g フラグを忘れていること — このテスターは常にすべてのマッチを見つけますが、あなたのコードは g を設定しない限り最初の 1 件しか見つけません。
名前付きキャプチャグループとは何ですか?
(?<name>...) という構文でグループにラベルを付け、位置ではなく名前でマッチを読めるようにします。JavaScript では match.groups.name です。マッチ一覧の下のグループパネルには、各マッチの番号付きキャプチャと名前付きキャプチャの両方が表示されます。
ここの正規表現はそのまま Python や Go で動きますか?
動くことは多いですが、常にではありません。文字クラス、量指定子、アンカーは移植可能です。後読み、名前付きグループの構文(Python は (?P<name>...) を使います)、インラインフラグには差異があります。さらに Go の RE2 エンジンは後方参照と先読み・後読みを完全に拒否します。
関連ツール