レッスン 1
正規表現とは何か
検索プログラムとしてのパターンと、開発での登場場面。
正規表現(regex)は テキストパターン を記述するコンパクトな言語です。error のような完全一致ではなく、形 を検索します。数字、引用値、メール風トークン、テンプレートに合うログ行など。
パターンであり、プレーンテキストではない
regex は regex エンジン が実行する小さなプログラムと考えてください。
- パターン(regex)を提供
- 入力テキスト(文字列、ファイル抜粋、バッファ)を提供
- エンジンは マッチ—パターンに合う部分文字列—と任意で キャプチャグループ を返す
直感例: \d{4}-\d{2}-\d{2} は「4 桁、ハイフン、2 桁、ハイフン、2 桁」—一般的な ISO 日付の形です。固定日付 1 つを検索するのと同じではありません。
開発者が regex を使う場所
よくある用途:
- 検証ヒント — メール、電話、slug 形式(多くの場合より強い validator と併用)
- ログ解析 — 非構造行からタイムスタンプ、ステータスコード、リクエスト ID を抽出
- リファクタ — キャプチャグループで多数ファイルの検索置換
- シンタックスハイライトと linter — コードのトークン化(通常は慎重に調整したパターン)
- ルーティングと rewrite ルール — Apache/Nginx location ブロック、一部フレームワークのパスルール
regex はテキスト内の 局所構造 に向いています。ネスト HTML、完全 JSON ドキュメント、任意プログラミング言語には不向き—パーサーを使ってください。
エンジンは異なる
JavaScript の RegExp、Python の re、PHP/Ri grep の PCRE、Rust の regex crate は 同一に動作しません。違いには次が含まれます。
- 存在するメタ文字と Unicode の扱い
- lookahead/lookbehind サポート
- デフォルトの greediness と行末ルール
他言語からパターンをコピーしたら、対象エンジンで再テスト してください。
要点
regex は 1 つの文字列ではなく文字列の族 を記述します。次のレッスンでは、その族を構成する語彙—リテラル、クラス、量指定子、フラグ、グループ—を積み上げます。