正規表現からNFAビジュアライザー
Thompson構成法を使用して正規表現をNFA状態図に変換します。
このツールについて
正規表現からNFAビジュアライザーは、Thompson構成法アルゴリズムを使用して正規表現を 非決定性有限オートマトン(NFA)の状態図に変換します。正規表現パターンを解析し、 NFAデータ構造を構築し、HTML Canvas上にインタラクティブな図を描画します —すべてブラウザ内で実行されます。
Thompson構成法はコンパイラ理論の古典的アルゴリズムで、正規表現を等価なNFAに 変換します。各正規表現演算子(連結、選択、クリーネ閉包)は特定のNFA フラグメントパターンにマッピングされます。結果のNFAは効率的なマッチングのため DFA(決定性有限オートマトン)に変換できますが、このツールはNFA構成ステップに 焦点を当てています。
選択(|)、連結、クリーネ閉包(*)、プラス(+)、オプション(?)、 文字クラス([abc])、ドット(.)、エスケープ文字、括弧によるグループ化を サポートしています。図では状態を円(受理状態は二重円)で、遷移をラベル付き 矢印で、イプシロン遷移を控えめな色で表示します。
すべての処理はブラウザ内で完全に実行されます。データがサーバーに送信されることは ありません。実践的な正規表現テストには正規表現テスターを、 クイックリファレンスには正規表現チートシートを、 他のアルゴリズム可視化にはグラフビジュアライザーや 二分木ビジュアライザーをご利用ください。
このツールはオートマトン理論を学ぶ情報科学の学生、教材を準備する教育者、 正規表現エンジンの内部動作を理解したい開発者に最適です。
使い方
- 正規表現入力フィールドに正規表現を入力します(例:
(a|b)*abb)。 - 入力に応じてNFA図が自動的にレンダリングされます。
- 入力の下に表示される状態数と遷移数を確認します。
- キャンバスをスクロールして大きな図を探索します。
- PNGダウンロードをクリックして図を画像ファイルとして保存します。
- 画像をコピーをクリックして図をクリップボードにコピーします。
- 下部の対応構文リファレンスで利用可能な演算子を確認します。
正規表現からNFAの人気例
よくある質問
データは安全ですか?
はい。すべての正規表現解析とNFA構成はクライアントサイドJavaScriptを使用してブラウザ内で実行されます。データがサーバーに送信されることはありません。
Thompson構成法とは何ですか?
Thompson構成法は1968年にKen Thompsonが発明したアルゴリズムで、正規表現を等価なNFAに変換します。各正規表現演算子(連結、選択、クリーネ閉包)がイプシロン遷移で接続される特定のNFAフラグメントにマッピングされます。
NFAとDFAの違いは何ですか?
NFA(非決定性有限オートマトン)は同じ入力に対して1つの状態から複数の遷移を持つことができ、イプシロン(空)遷移も持てます。DFA(決定性有限オートマトン)は各入力記号・各状態に対して正確に1つの遷移しかなく、イプシロン遷移もありません。すべてのNFAは等価なDFAに変換できます。
どの正規表現機能がサポートされていますか?
連結、選択(|)、クリーネ閉包(*)、プラス(+)、オプション(?)、括弧によるグループ化、文字クラス[abc]、ドット(.)、エスケープ文字(\d、\w、\s)をサポートしています。後方参照や先読みなどの高度な機能は正規言語を超えるためサポートされていません。
なぜイプシロン遷移が多いのですか?
イプシロン(ε)遷移はThompson構成法の自然な結果です。各演算子がNFAフラグメントを接続するためにイプシロン遷移を導入します。最小DFAよりも多くの状態を生成しますが、構成は単純で正しく、正規表現の長さに対して線形時間で実行されます。
図をエクスポートできますか?
はい。図をPNG画像としてダウンロードするか、クリップボードにコピーできます。図は表示されている実際の解像度でHTML Canvasにレンダリングされます。
関連ツール
正規表現テスター
リアルタイムのマッチハイライトとキャプチャグループで正規表現をテストします。
正規表現チートシート
検索可能な正規表現構文リファレンス。カテゴリフィルタ、ライブパターンテスト、JavaScript向け一般パターン集。
グラフビジュアライザー
有向・無向グラフをインタラクティブに構築し、BFS、DFS、Dijkstra、トポロジカルソートをステップ実行で可視化。
二分木ビジュアライザー
二分木をインタラクティブに可視化し、BST操作、トラバーサルアニメーション、バランスチェックを実行します。
ソートアルゴリズムビジュアライザー
ソートアルゴリズムをアニメーション付き棒グラフでステップバイステップ可視化。バブルソート、クイックソート等を比較。