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

Delphi中正則表達式語法(2) 或者與重復

編輯:Delphi

// | 號的使用, | 是或者的意思

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'CodeGear Delphi 2007';
  reg.RegEx  := 'e|Delphi|0'; //使用了 | 記號
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: Cod◆G◆ar ◆ 2◆◆7
  FreeAndNil(reg);
end;

// + 的使用, + 是重復 1 個或多個

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'ab+'; //使用了 + 記號, 這裡是允許 a 後面有 1 個或 多個 b
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: a aa aaa aaaa ◆ ◆ ◆a a呀a
  FreeAndNil(reg);
end;

// * 的使用, * 是重復 0 個或多個

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'ab*'; //使用了 * 記號, 這裡是允許 a 後面有多個或者 沒有 b
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆ ◆ ◆ ◆ ◆呀◆
  FreeAndNil(reg);
end;

// ? 的使用, ? 是重復 0 個或 1 個

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'a?'; //使用了 ? 記號
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆b ◆bb ◆bbb◆ ◆呀◆
  FreeAndNil(reg);
end;

//大括號的使用<1>, 指定重復數

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'a{3}'; //這裡指定重復 3 次
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: a aa ◆ ◆a ab abb abbba a呀 a
  FreeAndNil(reg);
end;

//大括號的使用<2>

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'a{2,4}'; //這裡指定重復 2-4 次
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: a ◆ ◆ ◆ ab abb abbba a呀a
  FreeAndNil(reg);
end;

//大括號的使用<3>

var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);
  reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
  reg.RegEx  := 'a{1,}'; //n 個或多個, 這裡是 1 個或多個
  reg.Replacement := '◆';
  reg.ReplaceAll;
  ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆ 呀◆
  FreeAndNil(reg);
end;

//上面這個 {1,} 和 + 是等效的;

//還有 {0,1} 與 ? 是等效的;

//{0,} 和 * 是等效的

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