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

本文通过实例对比了正则表达式中贪婪与非贪婪匹配的区别,详细展示了两者在匹配过程中的不同行为,并提供了Delphi代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://my.oschina.net/hermer/blog/320647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值