Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 正則表達式三大流派差異全解析:BRE、ERE、PRE 對照表與工具適用指南

編輯:Linux 教學

正則表達式隨 Unix 工具演進出三大標準流派,掌握其差異才能在 grep、sed、awk、perl 中精準施展。本文提供完整對照表與工具選型指南。

三大流派定義

縮寫全稱代表工具
BREBasic Regular Expressiongrep、sed (預設)
EREExtended Regular Expressionegrep、awk、grep -E
PREPerl Regular Expressionperl、grep -P、PCRE 庫

工具與流派對應關係

工具預設ERE 模式PRE 模式
grepBRE-E-P
egrepERE—-P
sedBRE-r / -E不支援
awkERE—不支援

核心語法差異對照表 (節錄關鍵項)

功能BREEREPRE
一次或多次 +\+++
零或一次 ?\???
或邏輯 |\|||
分組 ()\(\)()()
範圍 {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+ 支援支援

POSIX 字符類別 (三流派通用)

[: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 影響。

常用修飾符 (PRE/部分工具支援)

修飾符含義
i忽略大小寫
g全域匹配 (所有出現)
m多行模式 (^$ 匹配行首尾)
s單行模式 (. 匹配換行)
x延伸語法 (允許空白註釋)
U非貪婪模式

選型建議

  • 簡單行過濾:grep (BRE) 或 grep -E (ERE)
  • 欄位提取/運算:awk (ERE)
  • 流編輯/替換:sed -r (ERE)
  • 複雜捕獲/非貪婪/Unicode:grep -P / perl (PRE)

記住:BRE 需轉義 + ? | { } ( ),ERE 直接書寫,PRE 功能最強但效能較低。依需求選擇最輕量工具,是 Unix 哲學精髓。

Copyright © Windows教程網 All Rights Reserved