ChatGPTで正規表現を作る方法|一致例・反例で安全にテストする手順

ChatGPTで正規表現を作る手順。例を決め、パターンを作ってテストする 開発・クリエイティブ

ChatGPTに正規表現を作ってもらうときは、「何を探すか」だけでなく、使う環境、一致させたい文字列、一致させたくない文字列を一緒に伝えます。出てきた記号をそのまま大量のデータへ適用せず、架空の例でテストしてから使いましょう。正規表現とは、一定の形をした文字列を探すための「検索ルール」です。

この記事ではJavaScriptで動作を確認できる、SF-071のような管理番号を例にします。Excel、Googleスプレッドシート、WordPress、テキストエディターなどでは正規表現の対応範囲や置換の書き方が異なります。使うアプリをChatGPTに必ず伝え、実際のアプリでも確認してください。コード全般の相談はChatGPTでプログラミングする方法で扱っています。

正規表現は何に使う?

たとえば管理番号が「SF-の後に数字3桁」という決まりなら、SF-071、SF-123を探し、SF-12やSF-ABCを除くルールを表せます。検索は該当箇所を見つける作業、抽出は見つけた部分を取り出す作業、置換は見つけた部分を書き換える作業です。置換はデータを変えるため、検索より慎重に扱います。

記号 この例での意味 初心者の確認点
^ と $ 文字列の始まりと終わり 番号だけの行を対象にするか、文中から探すか
[0-9] 0から9の数字1文字 全角数字も対象にするか
{3} 直前の数字をちょうど3回 2桁や4桁も許すか
\. ピリオドそのもの .だけでは任意の1文字を意味する

JavaScriptの正規表現の構文とtest()などの使い方はMDNの正規表現ガイドで確認できます。記号の意味を全部暗記するより、どんな文字列を含め、除くかを先に決める方が近道です。

ChatGPTで作る4ステップ

  1. 環境と用途を決める:JavaScriptで行全体を検査するのか、エディターで文中を検索するのかを書きます。
  2. 一致例と反例を用意する:正しい例だけでなく、似ているが誤りの例を最低3つずつ作ります。個人情報や顧客の実データを貼らず、架空の文字列にします。
  3. 理由とテストを依頼する:正規表現だけでなく、各記号の説明と例ごとの判定を返してもらいます。
  4. 自分の環境で検証する:期待結果と実際の結果を比べ、違えば条件を直して再生成します。置換ならコピーで試してから本番へ進みます。

「正規表現を作って」だけでは用途が曖昧です。OpenAIのプロンプトの基本も、具体的な指示と反復的な修正を勧めています。ここでは上記の4要素を短い指示にまとめます。

正規表現の作成を環境と用途、一致例と反例、理由の確認、実行検証の4手順で示した図

そのまま使えるプロンプト

以下をChatGPTに貼り、かっこ内を自分の条件へ置き換えてください。実際の顧客名やメールアドレスは入力しません。

JavaScriptで使う正規表現を提案してください。
用途:(例:1行全体が管理番号かどうかを判定)
一致させたい例:(例:SF-071、SF-123、SF-999)
一致させたくない例:(例:SF-12、SF-1234、X-SF-123、SF-ABC)
条件:(例:半角大文字SF、半角ハイフン、半角数字3桁だけ)

正規表現、各記号の意味、JavaScriptのtest()での確認コード、
各例の期待結果と想定結果を表にしてください。
解釈が分かれる条件は、作成前に質問してください。

この条件なら候補は/^SF-[0-9]{3}$/です。両端の^と$があるので、X-SF-123の一部分だけを誤って採用しません。/はJavaScriptの正規表現リテラルの区切りです。エディターの検索欄ではスラッシュを付けず、^SF-[0-9]{3}$と入力する場合があります。アプリの仕様を確認してください。

一致例・反例を実際にテストする

JavaScriptが使える環境では、次のコードで確認できます。表示されるtrueは一致、falseは不一致です。コピーしてもサイト上のデータを書き換えないtest()だけを使っています。

const rule = /^SF-[0-9]{3}$/;
const samples = ["SF-071", "SF-123", "SF-999", "SF-12", "SF-1234", "X-SF-123", "SF-ABC"];
for (const sample of samples) {
  console.log(sample, rule.test(sample));
}
文字列 期待結果 このパターンの結果 理由
SF-071 一致 true 数字が3桁
SF-999 一致 true 数字が3桁
SF-12 不一致 false 2桁しかない
SF-1234 不一致 false 4桁ある
X-SF-123 不一致 false 先頭に余分な文字
SF-ABC 不一致 false 数字でない

SF-000もこのパターンには一致します。もし000を禁止したいなら、今のルールは不足です。「000は不可」と反例を追加し、ChatGPTに作り直してもらいます。同じように、日付形式の2026-99-99は「数字の形に合う」だけでは有効な日付だと保証できません。形式確認と業務上の妥当性チェックを分けましょう。

SF-071は形式に一致、SF-12は不一致、SF-000は業務条件の追加確認が必要なことを示す図

置換に使う前の安全確認

正規表現で検索するだけなら元データは変わりませんが、置換は多数の箇所を一度に変更できます。対象のコピーまたはバックアップを作り、数件で「変更前→変更後」を見比べてください。検索した件数も見て、想定より多ければ実行を止めます。アプリごとの置換記法や改行の扱いが違うため、JavaScriptの式をそのまま他のツールへ貼らないでください。

複雑なパターンや大量データでは、想定外の一致だけでなく処理が極端に遅くなる場合もあります。まず小さな架空データで試し、本番データは権限と取り扱い規則を守ってください。生成したコード自体の確認が必要ならChatGPTでコードレビューする方法も参照できます。

うまくいかないときの直し方

  • 広く一致しすぎる:行全体の検査なら^と$を付け、許可する文字と桁数を明示します。文中検索なら逆に両端固定が不要なこともあります。
  • 必要なものまで除外される:全角数字、空白、小文字、改行を許すか例で決めます。SF-071 の末尾空白を許容するかも指定します。
  • ChatGPTの説明と結果が違う:説明ではなく実行結果を優先します。期待と異なる正例・反例をそのまま渡し、最小の修正を依頼します。
  • 環境で動かない:JavaScript、Python、Excel、エディターでは構文やフラグ、置換の書き方が同一とは限りません。実際の環境名とエラーを伝え、そこで再検証します。

文字列の整理や集計全体を進めたい場合はChatGPTでデータ分析する方法を確認してください。正規表現は、その前処理の一部です。

よくある質問

ChatGPTが出した正規表現をそのまま使えますか?

提案はたたき台です。一致例と反例、実行環境で確認し、とくに置換はバックアップしたコピーで試してから使います。

プログラミングを知らなくても作れますか?

検索対象と除外対象を言葉で説明すれば候補は作れます。ただし、意図しない一致を見分けるために、少なくとも数件の正例・反例を自分で確かめる必要があります。

メールアドレスや日付の判定にも使えますか?

形式を調べる助けにはなりますが、実在するアドレスや有効な日付、連絡先の本人確認まで正規表現だけで保証できません。用途に応じて別の検証を行ってください。

まとめ

ChatGPTで正規表現を作るときは、環境と用途 → 一致例・反例 → 理由の説明 → 実行テストの順に進めます。SF-071の例は半角数字3桁だけを対象にする簡単なルールです。少しでも条件が違えば例を足して直し、置換はバックアップと少量テストを済ませてから実行しましょう。

コメント

タイトルとURLをコピーしました