程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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