正規表現を使う際に「あの記号の意味って何だったっけ?」とすぐに参照できる一覧があると非常に便利です。
この記事では正規表現でよく使われる記号・メタ文字・量詞・文字クラス・エスケープシーケンスを一覧表形式でまとめて解説していきます。
正規表現のリファレンスとして手元に置いておきたい方にぜひ参考にしていただきたい内容です。
正規表現の記号は文字クラス・量詞・アンカー・グループ・エスケープの5カテゴリに分類できる
それではまず、正規表現の記号を分類した全体像について解説していきます。
正規表現の記号は大きく①文字クラス ②量詞(繰り返し) ③アンカー(位置) ④グループ ⑤エスケープシーケンスの5カテゴリに分類できます。
それぞれのカテゴリを理解することで、複雑な正規表現パターンを読み解く力が身につきます。
正規表現の記号はほぼ全てのプログラミング言語で共通していますが、言語によって対応していない記法や動作が微妙に異なる部分もあります。
実際に使用する際は対象言語のドキュメントや正規表現チェッカーで動作を確認することをおすすめします。
文字クラス・特殊文字の一覧
続いては、文字クラスと特殊文字の記号一覧について確認していきます。
| 記号 | 意味 | 例・補足 |
|---|---|---|
| . | 任意の1文字(改行を除く) | a.c → abc、a1c、a_cなどにマッチ |
| \d | 数字1文字([0-9]と同義) | \d{3} → 123などにマッチ |
| \D | 数字以外の1文字([^0-9]と同義) | \Dは英字・記号・スペースなどにマッチ |
| \w | 英数字またはアンダースコア([a-zA-Z0-9_]と同義) | 変数名や識別子のマッチに便利 |
| \W | \w以外の文字 | 記号・スペース・日本語などにマッチ |
| \s | 空白文字(スペース・タブ・改行など) | 区切り文字の検索に使用 |
| \S | 空白以外の文字 | 空白を除く全文字にマッチ |
| [abc] | a・b・cのいずれか1文字 | [aeiou] → 母音にマッチ |
| [^abc] | a・b・c以外の1文字 | [^0-9] → 数字以外にマッチ |
| [a-z] | aからzの範囲の1文字 | [A-Za-z] → 全英字にマッチ |
量詞(繰り返し)の一覧
続いては、繰り返しを表す量詞の記号一覧について確認していきます。
| 記号 | 意味 | 例・補足 |
|---|---|---|
| * | 直前の要素が0回以上 | ab* → a・ab・abbなどにマッチ |
| + | 直前の要素が1回以上 | ab+ → ab・abb・abbbにマッチ(aのみは不可) |
| ? | 直前の要素が0回または1回 | colou?r → color・colourにマッチ |
| {n} | 直前の要素がちょうどn回 | \d{4} → 4桁の数字にマッチ |
| {n,} | 直前の要素がn回以上 | \d{3,} → 3桁以上の数字にマッチ |
| {n,m} | 直前の要素がn〜m回 | \d{3,5} → 3〜5桁の数字にマッチ |
| *? | 0回以上の最短マッチ(非貪欲) | <.+?> → 最も短いタグにマッチ |
| +? | 1回以上の最短マッチ(非貪欲) | デフォルトの+は最長マッチ(貪欲) |
アンカー・グループ・先読みの一覧
続いては、アンカーとグループ・先読み・後読みの記号一覧について確認していきます。
| 記号 | 意味 | 補足 |
|---|---|---|
| ^ | 文字列または行の先頭 | mフラグで各行頭に対応 |
| $ | 文字列または行の末尾 | mフラグで各行末に対応 |
| \b | 単語の境界 | \bword\b → 単語として「word」にマッチ |
| \B | 単語の境界以外 | 単語の途中にある文字列にマッチ |
| (…) | グループ(キャプチャあり) | マッチ部分を後で参照可能 |
| (?:…) | 非キャプチャグループ | グループ化のみ・キャプチャしない |
| (?=…) | 肯定先読み | 指定パターンが直後に続く場合にマッチ |
| (?!…) | 否定先読み | 指定パターンが直後に続かない場合にマッチ |
| (?<=…) | 肯定後読み | 指定パターンが直前にある場合にマッチ |
| (?<!…) | 否定後読み | 指定パターンが直前にない場合にマッチ |
| a|b | aまたはb(選択) | cat|dog → catまたはdogにマッチ |
よく使う正規表現パターンの実例集
続いては、実務でよく使われる正規表現パターンの実例を確認していきます。
実務でよく使われる正規表現パターン例
メールアドレスの簡易検証:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
日本の郵便番号(ハイフンあり):^\d{3}-\d{4}$
日付形式(YYYY-MM-DD):^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
URLの簡易検証:^https?://[^\s/$.?#].[^\s]*$
IPアドレス(IPv4):^(\d{1,3}\.){3}\d{1,3}$
全角文字(日本語など):[^\x00-\x7F]+
まとめ
正規表現の記号は文字クラス・量詞・アンカー・グループ・エスケープの5カテゴリに分類でき、それぞれの役割を理解することで複雑なパターンも読み解けるようになります。
よく使う記号を一覧として把握しておくことで、必要な時に素早くパターンを作成でき、開発作業の効率化につながります。
この一覧表を参照しながら、実際のコードやコマンドで正規表現を活用していただければと思います。
正規表現チェッカーと合わせて活用することで、より確実なパターン作成が実現できるでしょう。