希望パターンの正規表現作成

マッチする例としない例を提示して正確な正規表現を作成

プロンプト · 変数 3個

私は{{使用言語}}で使用する正規表現を必要としています。条件を言葉で説明する代わりに、マッチすべき例(通過例)とマッチしてはならない例(除外例)を以下に提示します。

「通過 例」にはすべてマッチし、「除外する例」には一切マッチしない正規表現を1つ作成してください。2つのリストの違いからルールを見つけ出すことが今回のタスクです。

結果は次の順序で出力してください:正規表現1行、記号を分解して解説した表、{{使用言語}}で実際に使用する2〜3行のコード例、そして私が提示した各例がマッチするかどうかを示した検証結果テーブルです。

例示だけでは判断できない境界条件(長さ制限、大文字小文字の区別、前後の空白など)がある場合は、勝手に決めつけず表の下に質問として最大3つまで記載してください。可読性の低い過度な短縮よりも、少し長くなっても意図が伝わりやすいパターンを選んでください。

通過 例: """ {{通過 例}} """

除外する例: """ {{除外する例}} """

コピーしたらここに貼り付け · ChatGPT・Claudeはプロンプト入りで開きます ChatGPTで開く ↗Claudeで開く ↗Geminiで開く ↗ ビルダーで編集 授業用カード画像を保存

なぜこう書くのか

文脈
私は{{使用言語}}で使用する正規表現を必要としています。条件を言葉で説明する代わりに、マッチすべき例(通過例)とマッチしてはならない例(除外例)を以下に提示します。
課題
「通過 例」にはすべてマッチし、「除外する例」には一切マッチしない正規表現を1つ作成してください。2つのリストの違いからルールを見つけ出すことが今回のタスクです。
形式
結果は次の順序で出力してください:正規表現1行、記号を分解して解説した表、{{使用言語}}で実際に使用する2〜3行のコード例、そして私が提示した各例がマッチするかどうかを示した検証結果テーブルです。
制約
例示だけでは判断できない境界条件(長さ制限、大文字小文字の区別、前後の空白など)がある場合は、勝手に決めつけず表の下に質問として最大3つまで記載してください。可読性の低い過度な短縮よりも、少し長くなっても意図が伝わりやすいパターンを選んでください。
例示
通過 例: """ {{通過 例}} """
例示
除外する例: """ {{除外する例}} """

正規表現の作成を依頼する際によくある失敗は、条件を言葉だけで説明してしまうことです。「携帯電話番号の正規表現」とだけ伝えるとそれらしいパターンが返ってきますが、ハイフンなしの番号や市外局番など、実際のデータに混ざっているパターンが考慮から漏れてしまいます。メールアドレスの正規表現のように一般的な依頼ほど、ネット上に転がっている古いパターンがそのまま出力されることもあります。

そのため、このプロンプトでは説明の代わりにのセットを2組渡します。通過させるものと除外するものを両方提示することで、AIは2つのリストの差異から正確なルールを導き出します。特に重要なのが除外する例です。正規表現のバグの大半は「マッチさせすぎてしまう」ことで発生しますが、反例がないとAIは緩すぎるパターンを選びがちです。異なる理由で弾かれるべき例を3〜4個用意しておくと非常に効果的です。

タスクの文脈で「すべてマッチし、一切マッチしない」と条件を厳密に定義しているため、AIは回答を出力する前に自ら例と照合します。また、最初に使用言語を指定するのは、後方参照(Lookbehind)の対応状況やエスケープルールがツールごとに異なるためです。GoogleスプレッドシートやVS Codeの検索バーで使う場合、最適な正規表現は全く変わってきます。

形式で指定した「各例のマッチ検証結果テーブル」は、このプロンプトで最も価値のある部分です。表を埋める過程でAI自身がパターンのセルフチェックを行い、ズレがあればその場で修正します。判断できない条件を質問として挙げさせることで、AIが文字数や大文字小文字のルールを独断で決めてしまうのを防ぎます。

用語が分からなければAha AIで: few-shot, prompt

悪い例との比較

よくある悪い例

携帯電話番号の正規表現を作って

返ってくるパターンは大抵 090-\d{4}-\d{4} 程度のもので、ハイフンなしの番号やスペース区切りの番号をすべて取りこぼしてしまいます。逆に \d{3}-\d{4}-\d{4} にしてしまうと、03などで始まる固定電話番号まで通過してしまいます。どちらにしても実際のデータを流し込んでみるまで問題に気づけません。

バリエーション

検証ではなく値を抽出したい場合

検証ではなく値を抽出したい場合

以下の「通過 例」はデータから抽出すべき部分で、「除外する例」は抽出してはならない部分です。{{使用言語}}で使用する抽出用の正規表現を作成し、各キャプチャグループが何を保持するのかを表で説明してください。

通過 例: """ {{通過 例}} """

除外する例: """ {{除外する例}} """

バリデーションではなくデータ抽出が目的の場合に使用します。キャプチャグループの解説を求めることで、結果をコードからそのまま取り出して活用できます。

置換処理(検索・置換)に使用する場合

置換処理(検索・置換)に使用する場合

{{使用言語}}の検索・置換機能で使用する正規表現と置換パターンをセットで作成してください。以下の例がそれぞれどのような形に変換されるかを「置換前・置換後」の表でまず提示し、元に戻せないような予期せぬ変更が発生しうる場合は警告を記載してください。

""" {{通過 例}} """

エディタ等で一括置換を行う際は、置換パターンの指定が不可欠です。プレビュー表で変換結果を事前に確認してから実行してください。

モデル別の注意

正規表現は言語やツールによってサポートされている構文が微妙に異なります。出力されたパターンは必ず実際のデータで一度テストし、漏れがある場合は例に追加して再プロンプトしてください。

関連プロンプト

最終更新 2026-09-02 · 誤りがありますか? 知らせる