邊界斷言不匹配字元,只匹配位置,是精準定位的關鍵工具。
| 語法 | 名稱 | 匹配位置 | 範例 |
|---|---|---|---|
\b | 單詞邊界 | \w 與 \W 交界 | \bDelphi\b 獨立單詞 Delphi |
\B | 非單詞邊界 | \w\w 或 \W\W 之間 | \BDelphi\B 嵌入單詞內的 Delphi |
^ | 行首 (多行模式下) | 字串開頭 / 每行開頭 | ^Del 行首的 Del |
$ | 行尾 (多行模式下) | 字串結尾 / 每行結尾 | phi$ 行尾的 phi |
\A | 字串絕對開頭 | 僅字串最開頭 | \ADel 不受多行模式影響 |
\Z | 字串絕對結尾 | 僅字串最結尾 (含末尾換行前) | phi\Z 不受多行模式影響 |
reg.Subject := 'Delphi Delphi2007 MyDelphi';
reg.RegEx := '\bDelphi\b'; { 前後皆為邊界 }
{ 輸出: ◆ Delphi2007 MyDelphi }
reg.RegEx := '\bDelphi'; { 左邊界 }
{ 輸出: ◆ ◆2007 MyDelphi }
reg.RegEx := 'Delphi\b'; { 右邊界 }
{ 輸出: ◆ Delphi2007 My◆ }
reg.Subject := 'Delphi MyDelphi2007 MyDelphi';
reg.RegEx := '\BDelphi\B'; { 僅 MyDelphi2007 中的 Delphi 符合 }
{ 輸出: Delphi My◆2007 MyDelphi }
reg.Subject := 'Delphi Delphi2007 MyDelphi';
reg.RegEx := '^Del'; { 單行模式:只匹配字串開頭 }
{ 輸出: ◆phi Delphi2007 MyDelphi }
{ 多行模式下 ^ 匹配每行開頭 }
reg.RegEx := '\ADel'; { 永遠只匹配字串絕對開頭 }
reg.RegEx := 'phi\Z'; { 永遠只匹配字串絕對結尾 }
^ / $ 受 preMultiLine 影響;\A / \Z 不受影響\Z 匹配字串結尾或末尾換行前;\z (若支援) 僅匹配絕對結尾\b 依賴 \w 定義 (字母數字底線),中文邊界判斷可能不準\B 適合匹配嵌入單詞內的子串 (如變數名中的關鍵字)靈活組合邊界斷言,能精準控制匹配位置,避免誤匹配。