わたしは匿名でAIに小さな事業を任せる実験をしていて、公開前に必ず「身バレ要素・機密情報が本文や画像に残っていないか」を機械で走査しています。
その走査スクリプトの中核は正規表現です。ここでは、実際に使っているパターンのうち、汎用性が高く他の用途にも転用しやすいものを抜き出してまとめます。
なぜ正規表現で検出するのか
目視でのチェックには限界があります。自分の書いた文章は「見慣れすぎて」いて、誤りやすい箇所ほど目が滑ります。機械的なパターン照合は、見慣れているかどうかに関係なく同じ精度で動きます。
メールアドレスらしき文字列
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}
一般的なメールアドレスの形式に広く一致します。誤検出(メールアドレスではない文字列を拾ってしまう)はある程度許容し、見逃しをゼロに近づける方を優先する設計です。
日本の郵便番号
\d{3}-\d{4}
「123-4567」のようなハイフン区切りの形式に一致します。フォームの入力検証や、文書内の郵便番号の抽出に使えます。
電話番号(国内・ハイフンあり)
0\d{1,4}-\d{1,4}-\d{4}
市外局番の桁数がまちまちなため、厳密な検証には向きませんが、「電話番号らしき文字列がどこかに残っていないか」を洗い出す用途には十分です。
APIキー・トークンらしき文字列
[A-Za-z0-9_-]{32,}
32文字以上の英数字・アンダースコア・ハイフンの連続は、APIキーやトークンである可能性が高い文字列です。誤検出も多いパターンですが、「公開前に人間が二重チェックする対象を絞り込む」用途では十分に機能します。
Windowsのユーザー名を含むパス
C:\\Users\\[^\\]+\\
スクリーンショットやログファイルに、実在するWindowsユーザー名を含むパスが写り込むことがあります。パスの形式そのものを検出することで、中身の文字列に依存せずに検出できます。
実際の運用での使い方
これらのパターンは、次のような流れで使っています。
1. 公開予定のフォルダ・ファイルを丸ごと走査する
2. 一致した箇所を、ファイル名と行番号つきで一覧表示する
3. 「誤検出かどうか」の判断は人間が行う(機械は候補を絞るだけ)
正規表現だけで完結させようとしないことが重要だと考えています。誤検出・見逃しのどちらも一定数は避けられないため、「機械が候補を絞り、人間が最終判断する」という役割分担にしています。
画像の中身は正規表現では検出できない
念のため書いておくと、上記のパターンはすべてテキストに対する検出です。画像の中に写り込んだ文字(スクリーンショット内のメールアドレスなど)は、この方法では検出できません。実際にこの弱点が原因で、機械のチェックをすり抜けた事故が過去に1件あります。画像は必ず目視での確認を別途行っています。
まとめ
| パターン | 用途 |
|---|---|
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,} |
メールアドレスの検出 |
\d{3}-\d{4} |
郵便番号の検出・入力検証 |
0\d{1,4}-\d{1,4}-\d{4} |
電話番号らしき文字列の検出 |
[A-Za-z0-9_-]{32,} |
APIキー・トークンらしき文字列の検出 |
C:\\Users\\[^\\]+\\ |
Windowsユーザー名を含むパスの検出 |
いずれもコピーしてそのまま使えます。用途に合わせて調整してください。
公開前チェックの仕組み全体(走査スクリプトの全文・審査専門のAIエージェント定義)は、noteの記事「公開ボタンを押す前に、身バレを機械で探すスクリプトを書いた」に置いています。
コメントを残す