Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

//贪婪匹配

var

  reg: TPerlRegEx;

begin

  reg := TPerlRegEx.Create(nil);



  reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>';

  reg.RegEx   := '<.*>'; //将会全部匹配, 因为两头分别是: < 和 >

  reg.Replacement := '◆';

  reg.ReplaceAll;



  ShowMessage(reg.Subject); //返回: ◆



  FreeAndNil(reg);

end;


//非贪婪匹配

var

  reg: TPerlRegEx;

begin

  reg := TPerlRegEx.Create(nil);



  reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>';

  reg.RegEx   := '<.*?>'; // *? 是非贪婪匹配方法之一, 将匹配每组 <>

  reg.Replacement := '◆';

  reg.ReplaceAll;



  ShowMessage(reg.Subject); //返回: ◆◆◆标题◆◆◆内容◆◆



  FreeAndNil(reg);

end;





//更多贪婪与非贪婪匹配对照:

 贪婪匹配   非贪婪匹配 
描述
? ?? 0 个或 1 个
+ +? 1 个或多个
* *? 0 个或多个
{n} {n}? n 个
{n,m} {n,m}? n - m 个
{n,} {n,}? n 个或多个

你可能感兴趣的:(Delphi)