AI時代の正規表現 ~いまでも「正規表現」が大切な理由~

ht-kittan
2025-07-15
2025-07-15

はじめに

「ChatGPTやCopilotがあれば、もう正規表現なんて覚えなくていいのでは?」
そんな声を耳にするようになりました。確かに、AIはとても便利です。自然言語で「メールアドレスを抽出する正規表現を教えて」と聞けば、一瞬で答えてくれます。

でも、だからこそ、今あらためて正規表現(RegExp)の基本を知っておくことが、AIを使いこなす上でも大きな武器になります。

本記事では、AI時代における正規表現の役割と、初級エンジニアが正規表現を学ぶ意味、そして活用方法を解説します。

正規表現ってなに?

正規表現(Regular Expression)とは、文字列のパターンを記述するための特殊な記法です。たとえば、次のような目的で使われます:

  • メールアドレスの抽出

  • 日付や郵便番号のチェック

  • 特定の単語の検索と置換

例:[0-9]{3}-[0-9]{4} は「123-4567」のような郵便番号にマッチします。

AI時代にも「正規表現」が有用な4つの理由

1. AIを使いこなすためにも「読む力」が必要

AIは正規表現を生成できますが、その出力を読んで理解できなければ、誤った結果を見逃してしまいます。

例:^(\+81|0)\d{1,4}-\d{1,4}-\d{4}$
これは何のパターン? どこが国番号? ハイフンの意味は?

少し読めるだけで、AI出力の信頼性を確認でき、修正もスムーズになります。
AIは強力なツールですが、「伝え方」が間違っている場合は、出力される正規表現も「思っているものと違う」ということが普通に発生し得ます。AIは(一応は)「指示した通り」の答えを返してくる「機械」です。
マッチしたい条件が複雑な場合には、AIに伝える「プロンプト」も複雑な言語表現が必要となり、正確に伝えることが容易でない場合が出てきます。

つまり「自分でも正規表現を書ける力」があって、その上でAIに依頼することで「省力化できる」「時短になる」という使い方がベストです。出力を確認できる力がないと、出力された正規表現が「使って大丈夫?」かどうかが判定できません。

特にエンジニアであれば、「AIに依頼」はOKですが、「AIに依存」は危険です。

2. コーディングやツール操作で「手軽に役立つ」

VSCodeやgrep、Notepad++ など、多くのツールは正規表現検索をサポートしています。

「ファイル中のすべてのTODO:コメントを見つけたい」
/TODO:.*/

このように、軽いタスク処理で威力を発揮するのが正規表現です。
後にも例示しますが、「自然言語でパターン・条件を正確に書く」ことは、実は思考コストが大きい場合があります。いくつかの正規表現を身につけることで、手軽に簡素に条件を指定できるようになります。

3. ロジックだけでなく「パターン」で考える力が身につく

プログラミングでは、「ループしてif文で判定して...」と書くより、「このパターンに合う?」という宣言的な発想も重要です。
正規表現は、パターン認識力を育てるトレーニングにもなります。

人間が「繰り返し処理」だと思っていることが、実は「機械」から見るとパターンの集合体である場合があります。

たとえば、下記のようなCSV形式のデータから「メールアドレス」を抽出したい場合を考えます。

 山田 太郎,yamada@example.com,東京
 佐藤 花子,satou@example.net,大阪
 鈴木 次郎,,名古屋

人間の自然な思考として、
「3行あるから、1行ずつ見て、2列目にメールアドレスがあるか確認して、あったら取り出す」
つまり「繰り返し処理が必要だ」と認識して、1行ずつループ処理をしたくなります。

一方で、機械(≒AI) の目線からデータ全貌を見ると、そもそも行を認識する必要もなく、
『 '[\w\.-]+@[\w\.-]+\.\w+'  のパターンを全て抽出すれば良いだけ 』
であり、ループ処理として認識する必要がない見え方が存在します。
(実現場では名前とセットで抽出が必要だったりするでしょうが、ここでは簡素化しています。)

このような「パターンの発想」ができる事は、AIへの効率的な指示にも役に立ちます。

4. AIへの有効な指示を簡素化・パターン化できる

確かにAIは自然言語を理解して、問題を解決してくれます。
ただし、「細やかな条件」を指定したい場合には、自然言語だけを使用するよりも、正規表現のような「形式言語」を併用することで、より確実に簡素にAIに対して条件を指示することが可能になります。

例:^(\+81|0)\d{1,4}-\d{1,4}-\d{4}$

例えば上記でも例示したこのパターンは、自然言語で表現すると「国際電話番号と国内電話番号の両方に対応した日本の電話番号」となります。
これは、「電話番号」という単語が共通認識として存在していて、それだけで電話番号のパターンとして表現できるため、ある程度は自然言語でも簡素に記述できています。
ところが、これが「製品番号」などの独自の形式になると、AIにパターンを認識させるために複雑な言語指示を必要とします。

仮に、「電話番号」という共通理解がない場合に、上記のパターンを言語化すると下記のようになります。

  • 行の先頭から始まる(^)
  • 「+81」または「0」で始まる((\+81|0))
  • 続けて、1~4桁の数字(\d{1,4})
  • ハイフン(-)で区切り
  • 続けて、1~4桁の数字(\d{1,4})
  • ハイフン(-)で区切り
  • 最後に4桁の数字(\d{4})で終わる

これだけの表現を、1行に圧縮して正確に伝えられるのが正規表現です。
また、「^(\+81|0)\d{1,4}-\d{1,4}-\d{4}$」これが、国際電話番号のパターンにマッチすると知っていれば、「81」の部分を変更するだけで、他の国の電話番号にもマッチさせられます。

そして、少し応用すれば、「Aで始まって、ハイフンで区切られた・・・」など、より複雑な独自の製品番号などのパターン表現も可能になります。
こういった「形式言語」を用いることで、自然言語よりも正確に、より簡素な表現でAIに伝えることが可能になります。また、自然言語と違って「表現の揺れ」が発生しないために、一度作っておくと、同じ正規表現で正確に機械やAIに命令を何度も出すことができます。

正規表現を学ぶおすすめステップ

  1. よく使うパターンを覚える

    • \d:数字、\w:英数字、\s:空白

    • .:任意の1文字、*:0回以上の繰り返し

  2. 便利サイトを活用する

  3. AIに助けてもらいながら学ぶ

    • ChatGPTに「この正規表現の意味を教えて」と聞いてみよう

    • 「電話番号を抽出したい、どんな正規表現がいい?」と相談もOK

まとめ

AIは強力なツールですが、正規表現を「読めて・少し書ける」だけでも、AIとの対話に大きく役立つことがあります。

AI時代だからこそ、「正規表現」が武器になります。
ぜひ、エンジニアでない方でも、少しずつ正規表現を試してみてください。

おまけ:よく使う正規表現チートシート

パターン 意味
\d+ 1文字以上の数字 2025
\w+ 英数字1文字以上 hello123
^ / $ 行の先頭 / 行の末尾 ^start →「start」で始まる行
. 任意の1文字 a.baab, acb など
[abc] a, b, cのいずれか gr[ae]ygray, grey