実務で頻出する「正規表現」関連の用語を、一言定義+最小実例でサッと確認。
grep / sed / awk / Perl / Python など多くのツールで使われるテキストパターン指定法を整理します。
このページで達成できること
- 基本の正規表現構文を理解
- 拡張正規表現(ERE)と基本正規表現(BRE)の違いを把握
- 実務での検索・置換・抽出に応用
- 落とし穴(エスケープ忘れ・ツール間の差異)を回避
すぐ引けるミニ索引
| 用語 | 一言で | 代表コマンド/例 |
|---|---|---|
| メタ文字 | 特別な意味を持つ文字 | `. ^ $ * + ? [ ] { } ( ) |
| 任意の1文字(.) | 任意の1文字にマッチ | grep 'h.t' |
| 繰り返し(* + ?) | 直前の繰り返しを指定 | a*, a+, a? |
| 文字クラス([ ]) | 指定集合の1文字 | [0-9], [A-Za-z] |
| 否定文字クラス([^ ]) | 集合に含まれない文字 | [^0-9] |
| 行頭・行末(^ $) | 行の先頭/末尾 | ^foo, bar$ |
| グルーピング(( )) | 部分パターンをまとめる | (abc)+ |
| オルタネーション( | ) | 複数候補のいずれか |
| 繰り返し指定({m,n}) | 出現回数を制御 | [0-9]{3} |
| エスケープ(\) | メタ文字を無効化 | \. |
| 後方参照(\1, \2) | グループの再利用 | \(.\)\1 |
| 拡張正規表現(ERE) | grep -E, egrep で利用 | `grep -E “(foo |
用語解説(繰り返しブロック)
メタ文字
とは:通常文字とは異なり、パターン指定の特別な意味を持つ文字。
最小実例
grep "a.*b" file.txt
関連:正規表現 / エスケープ
落とし穴:. や * を検索したい場合は \. \* のようにエスケープが必要。
任意の1文字(.)
とは:任意の1文字にマッチ。改行は除外。
最小実例
grep "h.t" words.txt # hat, hit, hot にマッチ
関連:文字クラス / 繰り返し
落とし穴:改行はマッチしない。
繰り返し(* + ?)
とは:直前要素の繰り返しを表す。
*= 0回以上+= 1回以上(EREのみ)?= 0回または1回
最小実例
grep "ba*na" file.txt # bana, baana, baaaana...
関連:拡張正規表現 / {m,n}
落とし穴:BRE では + や ? が通常文字。
文字クラス([ ])
とは:指定集合のいずれか1文字にマッチ。
最小実例
grep "[0-9]" file.txt
関連:否定文字クラス / POSIXクラス [[:digit:]]
落とし穴:ハイフン - を使うと範囲指定になる。
否定文字クラス([^ ])
とは:集合に含まれない1文字にマッチ。
最小実例
grep "[^0-9]" file.txt
関連:文字クラス
落とし穴:^ はクラス先頭のときだけ否定の意味。
行頭・行末(^ $)
とは:行の先頭 ^、末尾 $ にマッチ。
最小実例
grep "^error" syslog
grep "end$" file.txt
関連:アンカー
落とし穴:マルチラインかどうかで挙動が変わる。
グルーピング(( ))
とは:パターンをひとまとまりに扱う。
最小実例
grep -E "(foo|bar)+" file.txt
関連:オルタネーション / 後方参照
落とし穴:BRE では \( \) と書く必要あり。
オルタネーション(|)
とは:複数候補のいずれかにマッチ。
最小実例
grep -E "cat|dog" words.txt
関連:グルーピング / ERE
落とし穴:BRE では | は通常文字。grep -E が必要。
繰り返し指定({m,n})
とは:出現回数を明示。
最小実例
grep -E "[0-9]{3}" phone.txt # 3桁の数字
関連:繰り返し / ERE
落とし穴:BRE では \{m,n\} のようにエスケープが必要。
エスケープ(\)
とは:メタ文字を通常文字として扱う。
最小実例
grep "\." file.txt # ドットそのものを検索
関連:メタ文字 / クォート
落とし穴:シェルの展開より前に解釈される → "..." で囲う。
後方参照(, )
とは:グループ化した内容を再利用する。
最小実例
echo "noon" | grep -E "(..)\1"
関連:グルーピング / sed
落とし穴:ツールによってサポートの有無が異なる。
拡張正規表現(ERE)
とは:より多機能な構文を使える正規表現。grep -E, egrep で有効。
最小実例
grep -E "(foo|bar)+" file.txt
関連:BRE / PCRE
落とし穴:sed/awk の挙動は ERE だが、grep はデフォルト BRE。
運用の現場Tips
- grepの選択:単純検索は
-F、複雑検索は-E - エスケープの二重罠:シェルと正規表現で二重に考える
- 過剰マッチ防止:
.*は最小限に。具体的に書く - ツール差異に注意:Perl互換(PCRE)は
grep -Pで別機能

