なぜこう書くのか
正規表現の作成を依頼する際によくある失敗は、条件を言葉だけで説明してしまうことです。「携帯電話番号の正規表現」とだけ伝えるとそれらしいパターンが返ってきますが、ハイフンなしの番号や市外局番など、実際のデータに混ざっているパターンが考慮から漏れてしまいます。メールアドレスの正規表現のように一般的な依頼ほど、ネット上に転がっている古いパターンがそのまま出力されることもあります。
そのため、このプロンプトでは説明の代わりに例のセットを2組渡します。通過させるものと除外するものを両方提示することで、AIは2つのリストの差異から正確なルールを導き出します。特に重要なのが除外する例です。正規表現のバグの大半は「マッチさせすぎてしまう」ことで発生しますが、反例がないとAIは緩すぎるパターンを選びがちです。異なる理由で弾かれるべき例を3〜4個用意しておくと非常に効果的です。
タスクの文脈で「すべてマッチし、一切マッチしない」と条件を厳密に定義しているため、AIは回答を出力する前に自ら例と照合します。また、最初に使用言語を指定するのは、後方参照(Lookbehind)の対応状況やエスケープルールがツールごとに異なるためです。GoogleスプレッドシートやVS Codeの検索バーで使う場合、最適な正規表現は全く変わってきます。
形式で指定した「各例のマッチ検証結果テーブル」は、このプロンプトで最も価値のある部分です。表を埋める過程でAI自身がパターンのセルフチェックを行い、ズレがあればその場で修正します。判断できない条件を質問として挙げさせることで、AIが文字数や大文字小文字のルールを独断で決めてしまうのを防ぎます。
悪い例との比較
携帯電話番号の正規表現を作って
返ってくるパターンは大抵 090-\d{4}-\d{4} 程度のもので、ハイフンなしの番号やスペース区切りの番号をすべて取りこぼしてしまいます。逆に \d{3}-\d{4}-\d{4} にしてしまうと、03などで始まる固定電話番号まで通過してしまいます。どちらにしても実際のデータを流し込んでみるまで問題に気づけません。
バリエーション
検証ではなく値を抽出したい場合
以下の「通過 例」はデータから抽出すべき部分で、「除外する例」は抽出してはならない部分です。{{使用言語}}で使用する抽出用の正規表現を作成し、各キャプチャグループが何を保持するのかを表で説明してください。
通過 例: """ {{通過 例}} """
除外する例: """ {{除外する例}} """
バリデーションではなくデータ抽出が目的の場合に使用します。キャプチャグループの解説を求めることで、結果をコードからそのまま取り出して活用できます。
置換処理(検索・置換)に使用する場合
{{使用言語}}の検索・置換機能で使用する正規表現と置換パターンをセットで作成してください。以下の例がそれぞれどのような形に変換されるかを「置換前・置換後」の表でまず提示し、元に戻せないような予期せぬ変更が発生しうる場合は警告を記載してください。
""" {{通過 例}} """
エディタ等で一括置換を行う際は、置換パターンの指定が不可欠です。プレビュー表で変換結果を事前に確認してから実行してください。
モデル別の注意
正規表現は言語やツールによってサポートされている構文が微妙に異なります。出力されたパターンは必ず実際のデータで一度テストし、漏れがある場合は例に追加して再プロンプトしてください。
関連プロンプト
最終更新 2026-09-02 · 誤りがありますか? 知らせる