首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 正則表達式語法詳解 (10):Options/State 選項完整指南

     編輯:Delphi

TPerlRegEx.Options (集合型別) 與 State 控制正則引擎的匹配行為,掌握這些選項是編寫高效正則的關鍵。

主要 Options 選項 (集合型別)

preCaseLess:不區分大小寫

reg.Options := [preCaseLess]; 
{ 相當於其他語言的 /i 模式 }

preAnchored:僅匹配字串開頭

reg.Options := [preAnchored]; 
{ 相當於 ^,但更嚴格:任何情況下只匹配字串最開頭 }

preDollarEndOnly:$ 僅匹配字串結尾

reg.Options := [preDollarEndOnly]; 
{ 禁用 $ 在多行模式下匹配行尾 }

preMultiLine:多行模式

reg.Options := [preMultiLine]; 
{ 相當於 /m:^/$ 匹配每行開頭/結尾 }

preSingleLine:單行模式 (讓 . 匹配換行)

reg.Options := [preSingleLine]; 
{ 相當於 /s:. 匹配任意字元含換行 }

preUnGreedy:非貪婪模式

reg.Options := [preUnGreedy]; 
{ 全域啟用非貪婪,等同於所有量詞加 ? }

preExtended:擴展模式 (忽略空白、支援註解)

reg.Options := [preExtended]; 
{ 忽略模式中的空白;# 至行尾視為註解;空白需用 \x20 表示 }

State 狀態選項

State 值效果
preNotBOL讓 ^ (行首) 失效
preNotEOL讓 $ (行尾) 失效
preNotEmpty空字串不匹配 (具體行為需實測)

組合使用範例

{ 同時啟用:不區分大小寫 + 多行 + 單行 }
reg.Options := [preCaseLess, preMultiLine, preSingleLine]; 

{ 同時禁用:行首錨點 + 行尾錨點 }
reg.State := [preNotBOL, preNotEOL];

preAnchored vs ^ 差異重點

  1. preAnchored 永遠只匹配字串絕對開頭
  2. ^ 在 preMultiLine 下還匹配每行開頭
  3. ^ 在字元類別 [^...] 中表示排除

preExtended 詳細規則

  1. 忽略模式中所有空白字元 (空格、Tab、換行)
  2. 需匹配空白時使用十六進位:\x20 (空格)、\t (Tab)
  3. # 至行尾視為註解被忽略
  4. 需匹配 # 時用 \#
  5. 標準註解語法 (?#...) 不受 preExtended 影響

熟練組合這些選項,能讓正則表達式更精準、更易讀、更高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved