プログラミング入門

Stack OverflowからRegexをコピペするのをやめよう:AIで正規表現を「読める」コードに変える方法

「メールアドレスの検証、どうしよう…」そう思ってとりあえずStack Overflowを開き、よくわからない正規表現をコピペした経験、ありませんか?😅

実は今、海外の開発者コミュニティでこのテーマが話題になっています。「Stack OverflowからRegexをコピペするのをやめよう」という主張です。

正規表現(Regex)って、書くのが難しいのはもちろんですが、読むのもかなりつらいですよね。たとえばこんな文字列を見た瞬間、頭が真っ白になる方も多いはずです。

^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$

「これ、何をしているコードですか?」と聞かれて即答できますか?✋

🔍 コピペRegexの何が問題なの?

コピペ自体が悪いわけではありません。問題は次の点です。

  • 動作を理解していないまま本番コードに組み込む
  • エッジケース(特殊な入力)で予期せぬ挙動をする
  • セキュリティ上の穴になりうる(ReDoS攻撃など)
  • 後から読んだ人(自分含む)が意味を追えない

特にセキュリティが絡むバリデーション処理では、「なんとなく動く」では済まされない場面が多々あります。

🤖 AIを使って「読めるRegex」を作る

最近注目されているアプローチが、AIにRegexを説明させる・生成させるやり方です。ポイントは「コードを生成してもらうだけでなく、意味も一緒に確認する」こと。

たとえばPythonでこんなふうに使えます。

# Pythonでメールアドレスをバリデーションする例
import re

def validate_email(email: str) -> bool:
# ポイント: 各パートの意味を理解した上で使う
# ^ ............. 文字列の先頭
# [a-zA-Z0-9_.+-]+ ... ローカルパート(英数字・記号)
# @ ............. アットマーク
# [a-zA-Z0-9-]+ .... ドメイン名
# \. ............ ドット(エスケープ必須)
# [a-zA-Z0-9-.]+ ... TLD(.comや.jpなど)
# $ ............. 文字列の末尾
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
return bool(re.match(pattern, email))

# 動作確認
print(validate_email(

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です