程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 正則表達式之TPerlRegEx 類的屬性與方法(2): 關於子表達式

Delphi 正則表達式之TPerlRegEx 類的屬性與方法(2): 關於子表達式

編輯:Delphi

// MatchedExpression 與 SubExpressions[0] 
var 
 reg: TPerlRegEx; 
begin 
 reg := TPerlRegEx.Create(nil); 
 
 reg.Subject := 'CodeGear Delphi 2007'; 
 reg.RegEx  := 'Delphi'; 
 
 while reg.MatchAgain do 
 begin 
  ShowMessage(reg.MatchedExpression); //Delphi; 這是匹配到的內容 
  ShowMessage(reg.SubExpressions[0]); //Delphi; 也可以這樣顯示匹配到的內容 
 end; 
{ 
 SubExpressions 是一個數組: 
 SubExpressions[1] 儲存第 1 個表達式匹配的內容; 
 SubExpressions[2] 儲存第 2 個表達式匹配的內容; 
 SubExpressions[n] 儲存第 n 個表達式匹配的內容; 
 
 SubExpressions[0] 儲存整個表達式匹配的內容; 
 
 MatchedExpression 表示的不過是 SubExpressions[0]. 
} 
 
 FreeAndNil(reg); 
end; 
 
 
//提取子表達式匹配到的內容 
var 
 reg: TPerlRegEx; 
begin 
 reg := TPerlRegEx.Create(nil); 
 
 reg.Subject := 'abc A1111 BB222 CCC33 DDDD4'; 
 reg.RegEx  := '\b([A-D]+)([1-4]+)\b'; //這個表達式有兩個子表達式構成 
 
 while reg.MatchAgain do 
 begin 
  ShowMessage(reg.SubExpressions[0]); //將分別顯示: A1111 BB222 CCC33 DDDD4 
  ShowMessage(reg.SubExpressions[1]); //將分別顯示: A BB CCC DDDD 
  ShowMessage(reg.SubExpressions[2]); //將分別顯示: 1111 222 33 4 
 
  {另外: 
   reg.SubExpressionCount   是子表達式的個數; 
   reg.SubExpressionLengths[n] 是第 n 個表達式返回的字符串的長度; 
   reg.SubExpressionOffsets[n] 是第 n 個表達式返回的字符串在源字符串中的位置 
  } 
 end; 
 
 FreeAndNil(reg); 
end; 
 
 
//子表達式不能超過 MAX_SUBEXPRESSIONS = 99 個, MAX_SUBEXPRESSIONS 是 TPerlRegEx 的內置常數. 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved