PCRE 正則引擎提供一組簡潔的轉義序列代表常用字元類別,大幅簡化模式撰寫。
| 序列 | 匹配內容 | 等價字元類別 | 範例 |
|---|---|---|---|
\d | 數字 | [0-9] | \d{4} 四位數年份 |
\D | 非數字 | [^0-9] | 提取非數字字元 |
\w | 單詞字元 (字母數字底線) | [A-Za-z0-9_] | \w+ 匹配識別碼 |
\W | 非單詞字元 | [^A-Za-z0-9_] | 分隔符匹配 |
\s | 空白字元 | [\f\n\r\t\v] | \s+ 匹配任意空白 |
\S | 非空白字元 | [^\f\n\r\t\v] | 提取可見字元 |
\xNN | 十六進位 ASCII | [\x00-\xFF] | \x61 = 'a' |
. | 任意字元 (除換行) | [^\n] (單行模式下含換行) | 通配符 |
\f : 換頁 (Form Feed, 0x0C) \n : 換行 (Line Feed, 0x0A) \r : 回車 (Carriage Return, 0x0D) \t : 定位符/Tab (Horizontal Tab, 0x09) \v : 垂直定位符 (Vertical Tab, 0x0B)
reg.Subject := '期待Delphi 2008 for Win32!';
reg.RegEx := '\d';
reg.Replacement := '◆';
{ 輸出: 期待Delphi ◆◆◆◆ for Win◆◆! }
reg.RegEx := '\D';
{ 輸出: ◆◆◆◆◆◆◆◆◆◆◆2008◆◆◆◆◆◆◆◆32◆◆ }
reg.RegEx := '\w';
{ 輸出: 期待◆◆◆◆◆◆ ◆◆◆◆ ◆◆◆ ◆◆◆◆◆! }
reg.Subject := 'CodeGear Delphi';
reg.RegEx := '\x61'; { 0x61 = 97 = 'a' }
reg.Replacement := '◆';
{ 輸出: CodeGe◆r Delphi }
TPerlRegEx 基於 PCRE 8.x,僅支援 \x{FFFF} 形式 (需啟用 UTF-8 模式). 預設不匹配換行,需 preSingleLine 或 (?s) 啟用\s 包含換行,. + preSingleLine 等價於 [\s\S]{ Delphi 字串為 UTF-16,正則處理 Unicode 策略: }
- 使用
WideString/UnicodeString 作為 Subject
- 模式中直接寫 Unicode 字元 (如
中文)
- 或使用
\x{XXXX} 形式 (需確認引擎版本支援)
熟記這 8 個核心轉義序列,覆蓋 90% 的字元類別匹配需求。