レッスン 1

正規表現とは何か

検索プログラムとしてのパターンと、開発での登場場面。

正規表現(regex)は テキストパターン を記述するコンパクトな言語です。error のような完全一致ではなく、 を検索します。数字、引用値、メール風トークン、テンプレートに合うログ行など。

パターンであり、プレーンテキストではない

regex は regex エンジン が実行する小さなプログラムと考えてください。

  1. パターン(regex)を提供
  2. 入力テキスト(文字列、ファイル抜粋、バッファ)を提供
  3. エンジンは マッチ—パターンに合う部分文字列—と任意で キャプチャグループ を返す

直感例: \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 つの文字列ではなく文字列の族 を記述します。次のレッスンでは、その族を構成する語彙—リテラル、クラス、量指定子、フラグ、グループ—を積み上げます。

実践したいときは関連する DevCove ツールを使えます。任意であり、このレッスンの必須部分ではありません。

関連ツールを開く

コース概要へ戻る