正規表現 LLM 出力抽出ツール
雑な LLM 応答から構造化データ(JSON・コードブロック・key-value)を抽出。よくあるテンプレートから選ぶか、独自の正規表現を書く。ライブプレビュー付き。
上に入力すると結果が表示されます。
用途
LLM に JSON を頼んだ。```json フェンスに包まれ、「もちろん、こちらです!」という前置きまでついた JSON が返ってきた。あるいは「答えは 42 です」と返ってきた、42 だけが欲しかったのに。あるいはカンマ区切り文字列をくれと言ったのに、番号付きリストが返ってきた。誰も本気で解決していないパースの問題へようこそ。本ツールは典型的な抽出パターンの小さなライブラリと、自由記述の正規表現エディタを備え、実際の応答テキストに対してブラウザ内でパターンを反復できます。
使うべきタイミング
- エージェントパイプライン用の出力パーサ設計。 実際の応答をいくつか投入し、それら全部を捕まえる正規表現を組み、コードへ貼り付けます。
- 壊れたパーサのデバッグ。 モデルが「JSON はこちらです:」とフェンスの前に書くようになって本番が落ち始めた。どこから正規表現が外れているのかを正確に把握できます。
- 素早い一回限りの抽出。 ドキュメント内に 10 件の LLM 応答、それぞれから構造化部分を抜き出したい。貼って、マッチして、コピーして、次へ。
テンプレート一覧
- ```json フェンス内 JSON — 最も一般的。グループ 1 = 本体。複数フェンスがあり得る場合は
gフラグを。 - 任意のフェンス内 JSON — 同じ趣旨、言語タグは任意、本体が
{ … }または[ … ]っぽいときだけキャプチャ。 - YAML フェンス — JSON-fence と同じ、ただし
```yaml/```ymlに一致。 - 任意の fenced コードブロック — 言語タグと本体をキャプチャ。中身が何か分からないときに。
- 素の JSON オブジェクト — 先頭
{から末尾}までの貪欲マッチ。脆いが「ただの JSON」レスポンスには有効。 - 番号付きリスト項目 —
^\s*\d+[.)]\s*(.+)$にgm。各項目のテキスト(番号なし)をキャプチャ。 - key: value ペア — 行単位。グループ 1 = キー、グループ 2 = 値。最初のコロンで区切ります。
- 単一の分類ラベル — 1 語で答えるべき感情分析やセーフティ判定の出力に。
- カスタム正規表現 — パターンをクリアして自分で書く。
「Parsed JSON」行について
最初のキャプチャグループ(なければマッチ全体)が JSON としてパースできれば、ツールはそれをグループの下に表示します。これで「正規表現がマッチしたか」だけでなく「あなたが欲しかった部分を JSON 復元可能な形でマッチしたか」が分かります。パースに失敗するとこの行は空のままです。
よくある注意点
- PCRE ではなく JavaScript の正規表現です。
\Kなし、再帰なし。Lookbehind は新しめのブラウザ向け(2018 年以降 — ここでは問題ありませんが、よそにコピーするときは注意)。 - モデルは JSON をコメントで包みます。 文字列頭の
{を探そうとせず、フェンスを探すか、寛容な非貪欲キャプチャを使いましょう。 - 「JSON」末尾のカンマ。 学習にもかかわらず、いくつかのモデルは末尾カンマを混ぜます。正規表現はマッチしても、
JSON.parseは失敗。パース前に末尾カンマを除去してください。 - シングルクォートの「JSON」。 同じ話 — JSON のように見えて JSON ではなく、正規表現は気にせず、
JSON.parseは気にします。 - 入れ子フェンス。 モデルが応答内に Markdown のフェンス例を入れると、内側のフェンスで誤マッチが起きます。現実的なデータでテストを。
- 真剣な入れ子ブラケット抽出に正規表現は向きません。 モデルが入れ子オブジェクトを返すなら、JSON 認識の抽出器を書きましょう — あるいはフェンス形式で要求しその中身をパースします。
- プライバシー。 テキストとパターンはページ内に留まります。アップロードも API 呼び出しもありません。