正則表達式是 Linux 文字處理的通用語言。本文整理基本正則 (BRE) 與擴展正則 (ERE) 元字符差異、grep/egrep/fgrep 三種模式適用場景,並提供 man 7 regex 深入查閱路徑。



| 功能 | BRE (grep/sed) | ERE (egrep/awk) |
|---|---|---|
| 分組捕獲 | \(...\) | (...) |
| 或邏輯 | 不支援 | | |
| 量詞 | \{m,n\} | {m,n} |
| 單字邊界 | \< \> | \b |
| 反向引用 | \1 \2 | \1 \2 |
grep "pattern" file # BRE,預設
egrep "pat1|pat2" file # ERE,支援 | + ? {} 等
fgrep "fixed_string" file # 固定字串,最快,無正則解析
^ $ . * + ? {m,n} [abc] [^abc] | () \b \d \w \s\n \t \r \\ \. 等。
# IP 地址 (ERE)
egrep '\b((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b' access.log
# Email 簡易驗證
grep -E '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' users.txt
# 固定字串高速搜尋
fgrep "ERROR: Connection timeout" /var/log/app.log
熟練正則表達式,即可在海量日誌、程式碼、資料中精準提取所需資訊。