oLoveTools
隔離された正規表現エンジン

オンライン正規表現テスター・デバッガ・解説ツール

本物の構文木、各キャプチャグループの位置、破滅的バックトラッキングの警告、10言語へのコード出力を備えた正規表現エディタ。すべてタブの中だけで動きます。

すべてのマッチを位置とグループつきで表示
パターンを平坦なリストではなくツリーで解説
暴走したパターンは強制終了、タブは凍らせない
JavaScript、Python、Go、Rust ほか6言語へ出力
正規表現
/
/
有効マッチなし隔離済み
  • [ ] の中ではドットはもともとそのままの文字なので、エスケープは不要です。
テストテキスト

ハイライトをクリックするとそのマッチを選べます。Alt を押している間は素のテキストが表示され、F3 と Shift+F3 でマッチを順に移動できます。

次へ
マッチ

マッチなし

パターンは有効ですが、このテキストには現れません。フラグを確認してください。g がないと最初のマッチしか報告されません。

このパターンの動き
  • [\w.%+-]+1回以上繰り返します — 貪欲。取れるだけ取り、必要なときだけ返します
    • [\w.%+-]次のいずれか1文字: \w . % + -
  • @文字「@」
  • [\w.-]+1回以上繰り返します — 貪欲。取れるだけ取り、必要なときだけ返します
    • [\w.-]次のいずれか1文字: \w . -
  • \.文字「.」をそのままの意味で
  • [A-Za-z]{2,}少なくとも 2 回繰り返します — 貪欲。取れるだけ取り、必要なときだけ返します
    • [A-Za-z]次のいずれか1文字: A–Z a–z

使い方

1

パターンを書く

自分で入力するか、ライブラリから選ぶか、共有されたリンクを貼り付けます。パターンは各部分の実体に応じて色分けされ、誤りはその場所に下線が引かれます。

2

フラグとモードを決める

g、i、m、s、u、v、y、d を切り替え、検索・置換・分割のどれを行うか選びます。ボタンを押すまで何も動かしたくない場合はライブモードをオフにしてください。

3

安全に実行する

マッチは2秒の制限つき Web Worker で行われます。各マッチは位置とキャプチャグループつきで返り、いつまでも終わらない恐れのあるパターンは事前にパネルが警告します。

4

持ち出す

正規表現をコピーし、マッチを JSON か CSV で書き出し、10言語ぶんの同等コードを生成し、あるいは結果をそのまま別の oLoveTools のツールへ送れます。

トークナイザではなくパーサ

パターンは本物の構文木に解析されるため、解説は何が何の中にあるかを示し、名前つきグループも取り違えません。トークナイザは (?<year>\d{4}) を「キャプチャグループ+省略可能な何か」と読みますが、パーサはそれが名前つきグループだと読みます。

エンジンは終了させられる場所で動く

マッチは監視タイマーつきの Web Worker で行われます。ここでの実測では、(a+)+$ を31文字に対して走らせると、ブラウザと同じエンジンで4分以上 CPU を占有し続けました。ページ上ならタブの死ですが、ワーカーなら2秒で打ち切られる1回の実行にすぎません。

本物の位置を持つマッチ

d フラグが裏で有効になっているため、各キャプチャグループは何を捕まえたかだけでなく、どこから始まりどこで終わるかも持っています。ハイライトされたマッチの内側にグループを描き、一覧から該当文字へ飛べるのはそのおかげです。

火傷する前に警告する

重なり合う文字に対する入れ子の量指定子、何も消費しないものを囲む量指定子、存在しないグループへの後方参照、u フラグなしの \p{…}、後読みに未対応の古いブラウザ — どれも実行する前に指摘されます。

10言語へのコード出力

JavaScript、TypeScript、Python、Java、C#、PHP、Go、Rust、Ruby、grep/sed。フラグは各言語の流儀に正しく翻訳され、置換文字列もその言語の構文へ書き換えられます。RE2 にできないことをパターンが使っている場合、Go と Rust のコードにはその旨が明記されます。

スイート全体とつながる

置換後のテキスト、分割された各要素、JSON 形式のマッチを、WordFlow、DiffSnap、JSONFlow、CodeCard、HashBolt へそのまま送れます。ダウンロードフォルダを経由する必要はありません。

正規表現テスター

ブラウザを固めようがない正規表現テスター

正規表現は、正しくなる前に実行されることが前提の唯一の対象であり、間違ったものは病的になり得ます。(a+)+$ のようなパターンを惜しくもマッチしない文字列に当てると指数時間がかかり、しかもブラウザのエンジンには割り込む手段がありません。RegexFlow はすべてのマッチを2秒の監視タイマーつき Web Worker の中で実行します。制限を超えたワーカーは終了して差し替えられ、パターンを閉じ込めたまま凍りついたタブではなく、メッセージが返ってきます。

名前と位置を持つキャプチャグループ
検索だけでなく置換と分割も
実行前にバックトラッキングを警告
出力先は10言語

タブの外へは何も出ません

パターン、テストテキスト、置換文字列、開いたファイルはすべてブラウザ内だけで処理されます。アップロードもサーバーとの往復もありません。ファイルはブラウザ自身の FileReader で読み込まれます。外へ出る可能性があるのは共有リンクだけで、それもボタンを押したときに限られます。

動くパターンから動くコードへ

デモではなくデバッグのために

壊れた行を1本くらい生き延びなければならないログ解析、受け入れるのと同じくらい弾くことが求められる検証、$1 が正しい場所に落ちなければならないコードベース全体の置換、そして他人の40文字のパターンを引き継ぎ、触る前に中身を理解しなければならないあの瞬間。解説ツリー、位置情報、グループ表はそのためにあります。

エンジンは本番と同じもの

マッチにはブラウザ自身の RegExp を使うので、目の前で起きることがそのままあなたの JavaScript の挙動になります。挙動が分かれる部分も同じで、だからこそ後読みや unicodeSets の対応状況を前提にせず実際に確認しています。Python、Go、Rust へ書き出すときも、違いは明示され、コンパイルできないコードが黙って出てくることはありません。

よくある質問

Qパターンやテストテキストはどこかに送られますか?

いいえ。開いたファイルも含め、すべてタブの中の JavaScript で処理されます。ファイルはブラウザの FileReader で読み込まれ、アップロードされることはありません。インターネットを切っても動き続けます。

Q終わらないパターンを書いてしまったらどうなりますか?

強制終了されます。マッチは2秒の監視タイマーつき Web Worker で動き、時間内に応答がなければワーカーを終了して新しいものに置き換えます。これは見た目以上に重要です。ブラウザと同じエンジンでの実測で、(a+)+$ は31文字に対して4分以上動き続けました。メインスレッドでそれが起きれば、取り返しのつかないタブになります。

Qどの正規表現エンジンを使っていますか?

ブラウザ標準の RegExp です。ですからここで試したものが、そのままあなたの JavaScript の挙動になります。対応状況が分かれる箇所は決め打ちせず実際に確認しています。後読み(Safari は 16.4 でようやく対応)、unicodeSets の v フラグ、キャプチャグループの位置を得る d フラグです。足りないものがあれば、分かりにくいエラーではなく、その旨をお知らせします。

Qパターンの解説がツリーなのはなぜですか?

平坦なリストでは何が何の中にあるかを示せず、またトークナイザはパーサが間違えないところで間違えるからです。(?<year>\d{4}) は名前つきグループであって、キャプチャグループの後に省略可能な文字が続いたものではありません。各行は説明対象の文字と結びついているので、行にカーソルを合わせるとパターン側でその部分が光ります。

Q置換で $1 や名前つきグループは使えますか?

使えます。$1 から $99、$<name>、マッチ全体の $&、前後のテキストの $` と $'、そしてドル記号そのものの $$ です。入力した各トークンは何になるかとともに下に一覧表示され、生成コードでは出力先ごとの構文へ書き換えられます(Python は \g<name>、Java と C# は ${name})。

Q大きなファイルにも使えますか?

使えますが、40,000文字を超えると自動での再実行は止まり、実行ボタンを押すまで待ちます。キー入力のたびに大きなファイルを走査するのは無駄だからです。サイズに関係なくライブモードをオフにして、完全に手動で使うこともできます。

Q生成された Go のコードに警告が付くのはなぜですか?

Go と Rust は設計上つねに線形時間で動く RE2 を使っており、先読み・後読み・後方参照がありません。パターンがそれらを使っている場合でもコードは表示しますが、このままではコンパイルできないという注記を添えます。黙って失敗するコードを渡すより、そのほうが役に立つからです。

Qテストテキストの色分けは何を意味しますか?

各マッチはフクシア色で囲まれ、選択中のものはより明るくなります。選択中のマッチの内側では、キャプチャグループが紫の区間として表示されるので、どの文字が $1 に入ったのかがそのまま分かります。Alt を押している間はすべてのハイライトが消え、テキストを素のまま読めます。

関連する検索

正規表現テスター正規表現 チェック正規表現デバッガ正規表現 解説オンライン正規表現ビルダー正規表現 置換ツール破滅的バックトラッキング正規表現 python 変換javascript 正規表現テスター名前つきキャプチャグループ
oLoveTools スイートの一部
oLoveTools

正規表現のための、無料で非公開、ローカル完結の作業台。

© 2026 oLoveTools概要

RegexFlow | 無料オンライン正規表現テスター・デバッガ・解説ツール

無料の正規表現テスター。リアルタイムのハイライト、キャプチャグループの位置、構文ツリーによる解説、バックトラッキング警告、Python・Go・Java などへの書き出し。100% ブラウザ内で完結。

よくある質問

パターンやテストテキストはどこかに送られますか?

いいえ。開いたファイルも含め、すべてタブの中の JavaScript で処理されます。ファイルはブラウザの FileReader で読み込まれ、アップロードされることはありません。インターネットを切っても動き続けます。

終わらないパターンを書いてしまったらどうなりますか?

強制終了されます。マッチは2秒の監視タイマーつき Web Worker で動き、時間内に応答がなければワーカーを終了して新しいものに置き換えます。これは見た目以上に重要です。ブラウザと同じエンジンでの実測で、(a+)+$ は31文字に対して4分以上動き続けました。メインスレッドでそれが起きれば、取り返しのつかないタブになります。

どの正規表現エンジンを使っていますか?

ブラウザ標準の RegExp です。ですからここで試したものが、そのままあなたの JavaScript の挙動になります。対応状況が分かれる箇所は決め打ちせず実際に確認しています。後読み(Safari は 16.4 でようやく対応)、unicodeSets の v フラグ、キャプチャグループの位置を得る d フラグです。足りないものがあれば、分かりにくいエラーではなく、その旨をお知らせします。

パターンの解説がツリーなのはなぜですか?

平坦なリストでは何が何の中にあるかを示せず、またトークナイザはパーサが間違えないところで間違えるからです。(?<year>\d{4}) は名前つきグループであって、キャプチャグループの後に省略可能な文字が続いたものではありません。各行は説明対象の文字と結びついているので、行にカーソルを合わせるとパターン側でその部分が光ります。

置換で $1 や名前つきグループは使えますか?

使えます。$1 から $99、$<name>、マッチ全体の $&、前後のテキストの $` と $'、そしてドル記号そのものの $$ です。入力した各トークンは何になるかとともに下に一覧表示され、生成コードでは出力先ごとの構文へ書き換えられます(Python は \g<name>、Java と C# は ${name})。

大きなファイルにも使えますか?

使えますが、40,000文字を超えると自動での再実行は止まり、実行ボタンを押すまで待ちます。キー入力のたびに大きなファイルを走査するのは無駄だからです。サイズに関係なくライブモードをオフにして、完全に手動で使うこともできます。

生成された Go のコードに警告が付くのはなぜですか?

Go と Rust は設計上つねに線形時間で動く RE2 を使っており、先読み・後読み・後方参照がありません。パターンがそれらを使っている場合でもコードは表示しますが、このままではコンパイルできないという注記を添えます。黙って失敗するコードを渡すより、そのほうが役に立つからです。

テストテキストの色分けは何を意味しますか?

各マッチはフクシア色で囲まれ、選択中のものはより明るくなります。選択中のマッチの内側では、キャプチャグループが紫の区間として表示されるので、どの文字が $1 に入ったのかがそのまま分かります。Alt を押している間はすべてのハイライトが消え、テキストを素のまま読めます。

関連する検索

正規表現テスター, 正規表現 チェック, 正規表現デバッガ, 正規表現 解説, オンライン正規表現ビルダー, 正規表現 置換ツール, 破滅的バックトラッキング, 正規表現 python 変換, javascript 正規表現テスター, 名前つきキャプチャグループ