//贪婪匹配
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 个或多个 |