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