正則表達式隨 Unix 工具演進出三大標準流派,掌握其差異才能在 grep、sed、awk、perl 中精準施展。本文提供完整對照表與工具選型指南。
| 縮寫 | 全稱 | 代表工具 |
|---|---|---|
| BRE | Basic Regular Expression | grep、sed (預設) |
| ERE | Extended Regular Expression | egrep、awk、grep -E |
| PRE | Perl Regular Expression | perl、grep -P、PCRE 庫 |
| 工具 | 預設 | ERE 模式 | PRE 模式 |
|---|---|---|---|
| grep | BRE | -E | -P |
| egrep | ERE | — | -P |
| sed | BRE | -r / -E | 不支援 |
| awk | ERE | — | 不支援 |
| 功能 | BRE | ERE | PRE |
|---|---|---|---|
一次或多次 + | \+ | + | + |
零或一次 ? | \? | ? | ? |
或邏輯 | | \| | | | | |
分組 () | \(\) | () | () |
範圍 {m,n} | \{m,n\} | {m,n} | {m,n} |
| 單詞邊界 | \< \> | \< \> | \b |
數字 \d | 不支援 | 不支援 | \d |
非數字 \D | 不支援 | 不支援 | \D |
空白 \s | 不支援 | 不支援 | \s |
非空白 \S | 不支援 | 不支援 | \S |
單詞字符 \w | \w | \w | \w |
非單詞 \W | \W | \W | \W |
非貪婪 *? +? | 不支援 | 不支援 | 支援 |
反向引用 \1 | 支援 | gawk 4.1+ 支援 | 支援 |
[:alnum:] 字母數字 [A-Za-z0-9]
[:alpha:] 字母 [A-Za-z]
[:digit:] 數字 [0-9]
[:lower:] 小寫 [a-z]
[:upper:] 大寫 [A-Z]
[:space:] 空白字符 (含 \t\n\r\f\v)
[:blank:] 空格與製表符
[:graph:] 可見可列印字符 (非空白)
[:print:] 可列印字符 (含空白)
[:cntrl:] 控制字符 (ASCII 0-31)
[:punct:] 標點符號
[:xdigit:] 十六進位 [0-9A-Fa-f]
用法:[[:digit:]] 等同 [0-9],但語意更清晰且受 locale 影響。
| 修飾符 | 含義 |
|---|---|
i | 忽略大小寫 |
g | 全域匹配 (所有出現) |
m | 多行模式 (^$ 匹配行首尾) |
s | 單行模式 (. 匹配換行) |
x | 延伸語法 (允許空白註釋) |
U | 非貪婪模式 |
grep (BRE) 或 grep -E (ERE)awk (ERE)sed -r (ERE)grep -P / perl (PRE)記住:BRE 需轉義 + ? | { } ( ),ERE 直接書寫,PRE 功能最強但效能較低。依需求選擇最輕量工具,是 Unix 哲學精髓。