正規表現文字クラス

[a-z], d, w などの文字集合を指定する構文。マッチさせたい文字の範囲を定義する。

正規表現文字クラス (Character Class) は、マッチさせたい文字の集合を定義する構文です。角括弧 [] 内に文字や範囲を記述するカスタムクラスと、\d\w などの定義済みクラスの 2 種類があります。正規表現の基本構成要素として、ほぼすべてのパターンで使用されます。

カスタム文字クラスでは、[a-z] で小文字のアルファベット、[0-9] で数字、[a-zA-Z0-9] で英数字にマッチします。先頭に ^ を置くと否定クラスになり、[^abc] は a, b, c 以外の任意の文字にマッチします。範囲指定はハイフン - で行い、[A-F0-9] のように 16 進数の文字セットも簡潔に表現できます。正規表現パターンの書籍で文字クラスの活用法を学べます。

定義済みクラスは頻出する文字集合のショートカットです。\d は数字 ([0-9] と同等)、\w は単語文字 ([a-zA-Z0-9_])、\s は空白文字 (スペース、タブ、改行など) にマッチします。大文字にすると否定になり、\D は数字以外、\W は単語文字以外にマッチします。

Unicode 対応の正規表現では、\p{Script=Hiragana} のように Unicode プロパティエスケープを使って特定のスクリプトやカテゴリの文字にマッチさせることができます。JavaScript では ES2018 から u フラグと組み合わせて利用可能です。日本語テキストの処理では \p{Script=Han} (漢字)、\p{Script=Katakana} (カタカナ) などが有用です。

文字クラス内ではメタ文字の多くがリテラルとして扱われますが、] (クラスの終了)、\ (エスケープ)、^ (先頭での否定)、- (範囲指定) は特別な意味を持つため注意が必要です。これらをリテラルとしてマッチさせるにはエスケープするか、特別な意味を持たない位置に配置します。テキスト処理自動化の書籍で正規表現を使った実践的なテキスト処理が解説されています。

文字数カウントとの関連では、文字クラスを使って特定の種類の文字だけを数えることができます。たとえば \p{Script=Han} で漢字の数、\d で数字の数を個別にカウントでき、テキストの構成分析に役立ちます。