正規表現の基本パターン集 — メールアドレス・URL・日付を例に解説
公開日:
正規表現はバリデーションやログ解析など幅広い場面で使われる強力なツールですが、独特の記法に苦手意識を持つ人も多い分野です。この記事では基本要素の整理と、実務でそのまま使える代表的なパターンを紹介します。
正規表現の基本要素
正規表現は「文字クラス」「量指定子」「アンカー」「グループ」という4つの要素の組み合わせで成り立っています。文字クラス(例: [a-z])は特定の文字集合を、量指定子(*・+・?・{n,m})は直前の要素の繰り返し回数を、アンカー(^・$)は文字列の先頭・末尾といった位置を表します。
グループ(())は複数の文字をひとまとまりとして扱い、後から参照したり、|(OR)と組み合わせて複数パターンのいずれかにマッチさせたりする際に使います。
よく使う実践パターン
メールアドレスの簡易チェックには「^[^\s@]+@[^\s@]+\.[^\s@]+$」のようなパターンがよく使われます(RFC完全準拠の検証は非常に複雑になるため、実務では簡易チェックと確認メールの送信を組み合わせる運用が一般的です)。
日付(YYYY-MM-DD形式)の抽出には「\d{4}-\d{2}-\d{2}」、URLの抽出には「https?:\/\/[^\s]+」のようなパターンが定番です。いずれもキャプチャグループを使えば、年・月・日といった部分ごとの値を個別に取り出すこともできます。
フラグの意味
gフラグ(global)は文字列内のすべてのマッチを検索し、iフラグ(ignore case)は大文字・小文字を区別せずにマッチさせます。mフラグ(multiline)は^と$の挙動を各行の先頭・末尾に変え、複数行にわたるテキストの処理で役立ちます。
パフォーマンスの注意点
(a+)+のようにネストした量指定子を含むパターンは、マッチに失敗した際の再試行(バックトラック)が入力の長さに対して指数関数的に増えてしまうことがあり、「破滅的バックトラック」と呼ばれます。ユーザー入力をそのまま正規表現に含める場合や、長い文字列を処理する場合は、パターンをより単純な形で表現できないか見直すことが推奨されます。