はじめに
「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に命令を何度も出すことができます。
正規表現を学ぶおすすめステップ
-
よく使うパターンを覚える
-
\d
:数字、\w
:英数字、\s
:空白 -
.
:任意の1文字、*
:0回以上の繰り返し
-
-
便利サイトを活用する
-
regex101.com:試して学べる学習サイト
-
rubular.com:構文の視覚化に便利なサイト
-
-
AIに助けてもらいながら学ぶ
-
ChatGPTに「この正規表現の意味を教えて」と聞いてみよう
-
「電話番号を抽出したい、どんな正規表現がいい?」と相談もOK
-
まとめ
AIは強力なツールですが、正規表現を「読めて・少し書ける」だけでも、AIとの対話に大きく役立つことがあります。
AI時代だからこそ、「正規表現」が武器になります。
ぜひ、エンジニアでない方でも、少しずつ正規表現を試してみてください。
おまけ:よく使う正規表現チートシート
パターン | 意味 | 例 |
---|---|---|
\d+ |
1文字以上の数字 | 2025 |
\w+ |
英数字1文字以上 | hello123 |
^ / $ |
行の先頭 / 行の末尾 | ^start →「start」で始まる行 |
. |
任意の1文字 | a.b → aab , acb など |
[abc] |
a, b, cのいずれか | gr[ae]y → gray , grey |