Welcome

首页 / 软件开发 / Delphi / Delphi中正则表达式语法(6) 贪婪匹配与非贪婪匹配

Delphi中正则表达式语法(6) 贪婪匹配与非贪婪匹配2012-12-20 万一 //贪婪匹配

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 个或多个