正規表現入門:実用的なサバイバルガイド
· 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 つずつマッチ。 - エスケープ —
.、(、[には\.、\(、\[ - HTML のパースに正規表現を使わない — 専用パーサーを使いましょう。
練習場
正規表現を学ぶ最良の方法は、自分のコードで使うことです。ログの 1 行解析から始めてみましょう。次のプロジェクトでは複雑なパターンを自然に書けるようになります。
オンラインで練習したければ、正規表現テスター をお試しください — リアルタイムハイライトとキャプチャグループの可視化付き。