本文へスキップ
チュートリアル

正規表現入門:実用的なサバイバルガイド

· 8 分

正規表現は、誰かがキーボードをランダムに叩いたように見えます。しかし構文を一度マスターすれば、開発者のツールボックスで最も役立つツールの一つになります。

この記事は実例で入門させます。無駄な説明はなし。

文字:基本レンガ

正規表現は「何かにマッチする」命令です:

  • a — 文字 a
  • \d — 任意の数字([0-9] と同等)
  • \w — 任意の英数字またはアンダースコア
  • \s — 任意の空白(スペース、タブ、改行)
  • . — 改行以外の任意の文字

これらを組み合わせると、\d\d\d のような「3 桁の数字にマッチする」パターンができます。

量指定子:1 つだけでは不十分

  • * — 0 回以上
  • + — 1 回以上
  • ? — 0 回または 1 回
  • {n} — ちょうど n 回
  • {n,m} — n 回以上 m 回以下

たとえば \d{3}-\d{4}555-1234 のような電話番号にマッチします。

アンカー:パターンを位置に固定

  • ^ — 文字列の開始
  • $ — 文字列の終了
  • \b — 単語境界

^Error: は「Error:」で始まる行にマッチ — ログからエラーを見つけるのに最適です。

実例

メールを検証(実用版)

^[\w.+-]+@[\w-]+\.[\w.-]+$

完璧ではありませんが、99% のタイプミスを捕捉できます。

URL からドメインを抽出

https?://([^/]+)

キャプチャグループ ([^/]+) がドメインを取り出します。

連続する空白を 1 つに

\s+

単一の空白に置換。

ISO 日付を検証

^\d{4}-\d{2}-\d{2}$

フォーマットのみ検証(2026-13-99 も通る)。

フラグ:スイッチ

  • g — グローバル
  • i — 大文字小文字を無視
  • m — 複数行
  • s — ドットが改行にもマッチ

/error/gi は大文字小文字を区別せずにすべての “error” を探します。

よくある落とし穴

  1. 貪欲マッチ対非貪欲マッチ* はデフォルトで貪欲。<.*> は行全体を食べます。<.*?> を使えば 1 つずつマッチ。
  2. エスケープ.([ には \.\(\[
  3. HTML のパースに正規表現を使わない — 専用パーサーを使いましょう。

練習場

正規表現を学ぶ最良の方法は、自分のコードで使うことです。ログの 1 行解析から始めてみましょう。次のプロジェクトでは複雑なパターンを自然に書けるようになります。

オンラインで練習したければ、正規表現テスター をお試しください — リアルタイムハイライトとキャプチャグループの可視化付き。