本文へスキップ

正規表現入門:パターンで文字列を操る基本

・対象: 初学者,Web エンジニア・タグ: tool:regex-tester, regex, validation

ログ抽出・入力チェック・置換…**正規表現(Regular Expression)**はテキスト処理の万能ナイフです。 ここでは最低限のルールと、実務でよく使うパターンを紹介します。


1. 導入:よくある悩み・初心者の疑問

  • .* の意味が混ざる
  • 期待外の場所まで一致してしまう

2. 基本の構造(定義とメタ文字)

文字列の「パターン」を記述し、それに一致する部分を検索/抽出/置換するための表現方法です。

例:/\d+/ は 1 桁以上の数字に一致します。


3. 仕組み・構造:メタ文字とエスケープ

  • 代表的メタ文字: . 任意 1 文字, * 0 回以上, + 1 回以上, ? 0/1 回, [] 文字クラス, () グループ, | OR
  • アンカー: ^ 行頭, $ 行末
  • フラグ: i 大文字小文字無視, g 全体検索, m 複数行, s ドット改行許可
  • エスケープ: メタ文字自身を検索するには \. のようにバックスラッシュ

4. よくあるつまずき/勘違い

  • 貪欲(greedy)な .* が取り過ぎる → .*? の最短一致を検討
  • マッチ範囲が広がる → アンカー^$や境界\bを利用
  • 改行に.が一致しない → フラグsを検討

5. 実例:よくあるパターン

  • メール:^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$
  • URL(簡易):^https?://[\w.-]+(?:/[\w./-]*)?$
  • 日付(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
  • 数字のみ:^\d+$

注意: これらは簡易版です。実運用では要件に応じて厳密化してください。


6. セキュリティ・運用上の注意

  • ReDoS(正規表現 DoS)に注意:複雑なバックトラッキングを避ける
  • ユーザー入力は必ずタイムアウト長さ制限を設ける

7. 手を動かす:関連ツール /tools/regex-tester の紹介

  • /tools/regex-tester にアクセス
  • パターン・フラグ・テキストを入力して一致を確認
  • mark表示で一致部分を視覚的に把握、キャプチャも配列で確認

8. 3 分クイズ

  • 最短一致の書き方は? → *? +?
  • 行頭/行末に一致させるには? → ^ $
  • 改行も.に含めるには? → フラグs
クイズ(3問)
  1. \bは何の境界? → 単語境界
  2. 取り過ぎを防ぐには? → 最短一致や具体的な文字クラス
  3. ReDoS 対策は? → タイムアウト/長さ制限/パターン簡素化

9. 関連リンク

関連ツール: /tools/regex-tester