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

Delphi 正則表達式語法詳解 (2):或邏輯 | 與量詞 + * ? {n,m} 完整指南

     編輯:Delphi

| (或) 與量詞 + * ? {n,m} 是構建複雜匹配模式的兩大基石。

或邏輯 |

reg.Subject := 'CodeGear Delphi 2007'; 
reg.RegEx := 'e|Delphi|0'; { 匹配 e 或 Delphi 或 0 }
reg.Replacement := '◆'; 
reg.ReplaceAll; 
{ 輸出: Cod◆G◆ar ◆ 2◆◆7 }

量詞完整對照

+ : 一次或多次

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a'; 
reg.RegEx := 'ab+'; { a 後接 1+ 個 b }
{ 輸出: a aa aaa aaaa ◆ ◆ ◆a a呀a }

* : 零次或多次

reg.RegEx := 'ab*'; { a 後接 0+ 個 b }
{ 輸出: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆ ◆ ◆ ◆ ◆呀◆ }

? : 零次或一次

reg.RegEx := 'a?'; { 可選 a }
{ 輸出: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆b ◆bb ◆bbb◆ ◆呀◆ }

大括號精確量詞

{n} : 恰好 n 次

reg.RegEx := 'a{3}'; { 連續 3 個 a }
{ 輸出: a aa ◆ ◆a ab abb abbba a呀 a }

{n,m} : n 到 m 次

reg.RegEx := 'a{2,4}'; { 2-4 個 a }
{ 輸出: a ◆ ◆ ◆ ab abb abbba a呀a }

{n,} : n 次或更多

reg.RegEx := 'a{1,}'; { 1+ 個 a,等同 a+ }
{ 輸出: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆呀◆ }

等價關係總結

簡寫大括號完整寫法含義
?{0,1}0 或 1
+{1,}1 或多
*{0,}0 或多

優先級與分組

  • 量詞優先級最高:ab* = a(b*),非 (ab)*
  • 用括號改變優先級:(ab)* 匹配 ababab...
  • | 優先級最低:a|bc = a|(bc)

貪婪/非貪婪提醒

所有量詞預設貪婪,加 ? 變非貪婪:*? +? ?? {n,m}?。詳見第 6 篇。

掌握 | 與量詞的優先級、分組、等價關係,能精確構建任意重複與選擇邏輯。

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