IT·テック

正規表現(Regex)

たくさんの文字の中から、ほしい形の文字だけをすくい上げる「オーダーメイドの文字網」です。

  • 約3分
  • 図 1点
  • 2026-10-13 検証

定義

正規表現(略して「正規表現」「Regex」)は、特定のルールを持つ文字列を簡単に見つけて扱うために使う、特別な記号の取り決めです。文字を一つひとつ比べなくても、パターンを指定するだけでメールアドレスや電話番号のような情報を一度に探し出したり、形式をチェックしたりできます。

ほしい形だけをふるい分ける魔法のふるい

砂の中から貝殻だけを選び出したいとき、手で一つずつ拾うより、貝殻の形の穴があいたふるいを使うほうがずっと速いですよね。文字を扱うときも同じです。たとえば本一冊の中から「090-」で始まる電話番号をすべて探すとしたら、大量の数字を一つずつ読んでいくのはとても骨が折れます。

正規表現は、まさにこんな場面で使うオーダーメイドの文字網です。「090、ハイフン、数字4つ、またハイフン、数字4つ」というルールを記号にして投げ込むと、コンピューターが一瞬で条件に合う文字だけをすくい上げてくれます。

このおかげで、会員登録画面でユーザーがメールアドレスやパスワードの形式を正しく入力したかどうかを、すぐにチェックできます。数百万行にもなる膨大な文書でも、ほしい形のテキストをわずか数秒で見つけ出し、別の文字に置き換えることもできます。

暗号のように見えても、ちゃんとルールがあります

初めて正規表現を見ると、暗号か宇宙語のように感じますよね。アルファベットや数字、特殊記号が入り乱れているからです。でも、文法のルールをいくつか知るだけで、とても直感的なパズルのように読めるようになります。

たとえば `\d` は0から9までの任意の数字を表します。後ろに `+` をつけて `\d+` と書くと、数字が1つ以上続くという意味になります。`?` や `*` のような記号は文字が現れる回数を、`^` や `$` のような記号は行の先頭や末尾といった位置を指定する役割を持っています。

こうした小さな記号をブロックのように組み合わせれば、「英字で始まり、アットマーク(@)とドット(.)が入ったメールアドレス」のような複雑なルールも、たった一行の短い式で表せます。長いプログラムを書かなくても、一行で強力な検索機能を実現できるわけです。

もう少し正確に言うと

もう少し正確に言うと、正規表現は単に文字を比べる道具にとどまらず、コンピューター科学でいう形式言語と計算理論に根ざしています。コンピューターは、私たちが書いた正規表現のルールをもとに一種の「状態遷移の地図」を作り、文字を一つずつ確認していきます。

ただし、ルールをあまりに複雑だったりあいまいだったりする形で組むと、コンピューターが膨大な場合の数をさかのぼって検討することになり、処理時間が爆発的に増えて、止まったように見えてしまうことがあります。これを「壊滅的バックトラッキング(catastrophic backtracking)」と呼びます。

また、正規表現は文脈や意味を解釈できません。文字の見た目と並び順という形式的なパターンだけを認識します。そのため、複雑な文脈の把握が必要な自然言語処理や大規模なAI分析では、正規表現とは別の精密な言語モデルのアルゴリズムを併用します。

よくある誤解

誤解

正規表現は特定のプログラミング言語でしか使えない機能だ。

事実

正規表現は、JavaScript、Python、Javaなどほぼすべてのプログラミング言語やテキストエディターで使える文字列処理のルールです。ただし、ひとつの統一された標準があるわけではなく、ツールごとに文法が少しずつ違う「方言」があります。

日常で出会う場面

  1. ウェブサイトの会員登録で、パスワードに英字・数字・記号がすべて含まれているかをリアルタイムでチェックします。

  2. お客様対応の記録数万件から、マイナンバーや電話番号などの個人情報を自動で探し出し、マスキング(伏せ字)処理します。

つまり ひとことで

正規表現は、決まった記号のルールを使って、膨大なテキストからほしいパターンの文字を素早く正確に見つけ出す道具です。

作成 2024-08-09 更新 2026-10-13 検証 2026-10-13