正規表現パターン
テキストの検索・置換に使うパターン記述言語。特殊文字とリテラル文字を組み合わせて文字列のパターンを定義する。
正規表現パターン (Regular Expression Pattern) は、テキストの検索・置換・検証に使われるパターン記述言語です。メタ文字 (特殊文字) とリテラル文字を組み合わせて文字列のパターンを定義します。1950 年代に数学者スティーブン・クリーネが形式言語理論で提唱した概念に起源を持ち、現在ではほぼすべてのプログラミング言語とテキストエディタでサポートされています。
JavaScript では /pattern/flags のリテラル記法か new RegExp('pattern', 'flags') のコンストラクタで正規表現を作成します。test() でマッチの有無を判定、match() でマッチ結果を取得、replace() で置換、split() で分割を行います。リテラル記法はパターンが固定の場合に、コンストラクタは動的にパターンを組み立てる場合に使い分けます。正規表現入門の書籍で基本から応用まで学べます。
基本的なメタ文字には . (任意の 1 文字)、^ (行頭)、$ (行末)、| (OR) があります。フラグには g (グローバル検索)、i (大文字小文字無視)、m (複数行モード)、s (dotAll モード)、u (Unicode モード) などがあり、マッチの挙動を制御します。ES2022 で追加された d フラグはマッチのインデックス情報を取得できます。
正規表現の実務での活用範囲は広大です。メールアドレスや電話番号の形式検証、ログファイルからの情報抽出、テキストエディタの検索置換、Web スクレイピングでのデータ抽出、入力バリデーションなど、テキストを扱うあらゆる場面で使われます。ただし、HTML や JSON のような構造化データの解析には正規表現は不向きであり、専用のパーサーを使うべきです。
正規表現を書く際の注意点として、可読性の確保があります。複雑なパターンはコメント付きの拡張モード (一部の言語でサポート) や、パターンを変数に分割して組み立てる方法で可読性を高められます。また、ユーザー入力をそのまま正規表現に組み込むと ReDoS (正規表現サービス拒否攻撃) のリスクがあるため、入力のエスケープ処理が必須です。正規表現実践の書籍で実務での活用パターンが解説されています。
文字数カウントとの関連では、正規表現はテキスト分析の基盤技術です。特定のパターンに一致する文字列の出現回数を数えたり、空白や記号を除いた実質的な文字数を算出したり、テキストの構成要素 (漢字、ひらがな、カタカナ、英数字) を分類して集計したりする処理に正規表現が活用されます。