程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi中正則表達式語法(8) 引用子表達式 - 也叫反向引用

Delphi中正則表達式語法(8) 引用子表達式 - 也叫反向引用

編輯:Delphi
//准備: 我們先寫一個搜索所有英文單詞的表達式
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
 
  reg.Subject := 'one two three four five six seven eight nine ten';
  reg.RegEx   := '\b[A-Za-z]+\b'; //這個表達式就可以找到所有的英文單詞
  reg.Replacement := '◆';
  reg.ReplaceAll;
 
  ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
 
  FreeAndNil(reg);
end;
 
//假如我們只需要每個單詞的第一個字母呢? 這要用到子表達式
// www.bianceng.cn
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
 
  reg.Subject := 'one two three four five six seven eight nine ten';
  reg.RegEx   := '\b([A-Za-z])[A-Za-z]*\b'; //注意表達式中有子表達式, 在 () 中
  reg.Replacement := '\1'; // \1 引用了第一個子表達式
  reg.ReplaceAll;
 
  ShowMessage(reg.Subject); //返回: o t t f f s s e n t
 
  FreeAndNil(reg);
end;
 
//表達式中可以有多個子表達式
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
 
  reg.Subject := 'one two three ten';
  reg.RegEx   := '(t)(\w+)';
  reg.Replacement := '[\1-\2:\0]'; // \1\2 分別引用對應的子表達式; \0 引用整個表達式
  reg.ReplaceAll;
 
  ShowMessage(reg.Subject); //返回: one [t-wo:two] [t-hree:three] [t-en:ten]
 
  FreeAndNil(reg);
end;
 
//在後面介紹 TPerlRegEx 類的方法時, 關於對 (子表達式) 的引用還有更多話題.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved