正則表達式中特殊字元必須轉義才能匹配字面值,TPerlRegEx 遵循 PCRE 標準轉義規則。
| 特殊字元 | 正則意義 | 匹配字面值 |
|---|---|---|
^ | 字串開頭 / 字元類別排除 | \^ |
$ | 字串結尾 | \$ |
( ) | 標記子表達式 | \( \) |
[ ] | 字元類別 | \[ \] |
{ } | 量詞範圍 | \{ \} |
. | 任意字元 (除換行) | \. |
? | 0-1 次量詞 | \? |
+ | 1+ 次量詞 | \+ |
* | 0+ 次量詞 | \* |
| | 或邏輯 | \| |
\ | 轉義字元本身 | \\ |
reg.Subject := '你好嗎? 還行!';
reg.RegEx := '\?|!'; { 問號必須轉義,驚嘆號非特殊字元可不轉義 }
reg.Replacement := '◆';
reg.ReplaceAll;
{ 輸出: 你好嗎◆ 還行◆ }
reg.RegEx := '\?|\!|\好'; { ! 和 好 加了 \ 也正常 }
{ 但最佳實踐:只轉義必要字元 }
reg.Options := [preExtra];
{ 應該讓非特殊字元前加 \ 產生錯誤,但實測效果不明確 }
] \ ^ - 需轉義,其他通常不需Pos/Contains 更快記住核心 11 個特殊字元與轉義規則,是編寫正確正則表達式的基礎。