随笔 - 1291  文章 - 26 评论 - 3122 trackbacks - 181

提示1: 点击 标题 可进入首页;   提示2: 从搜索引擎中搜索 万一 可迅速找到这里.

随笔分类(1440)

随笔档案(1245)

积分与排名

  • 积分 - 824788
  • 排名 - 19

最新评论

阅读排行榜

60天内阅读排行

//贪婪匹配
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 个或多个
posted on 2007-12-21 13:55 万一 阅读(784) 评论(8)  编辑 收藏 网摘 所属分类: 40.Delphi 与正则表达式

FeedBack:
万老师

var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>';
reg.RegEx := '<title.*?>(.*)</title>'; // *? 是非贪婪匹配方法之一, 将匹配每组 <>
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: <html><head>◆</head><body>内容</body></html>

FreeAndNil(reg);
end;

我的目的只想把 <title>标题</title>中的标题替换成◆
返回结果应该为:
<html><head><title>◆</title></head><body>内容</body></html>
这样的正则式怎么写,谢谢
  回复  引用    
#2楼 [楼主] 2008-10-29 17:19 万一      
@外来天客
现在 TPerlRegEx 有适合 2009 的版本了吗?

  回复  引用  查看    
@万一
有了,我昨天下了个,里面有个PerlRegExD2009.dpk
  回复  引用    
#4楼 [楼主] 2008-10-30 10:04 万一      
@外来天客
谢谢, 我试试.

  回复  引用  查看    
@万一
期待中。。。
  回复  引用    
#6楼  2008-10-31 15:20 Rays [未注册用户]
1楼问的这个,我也想知道
  回复  引用    
#7楼 [楼主] 2008-10-31 15:25 万一      
@Rays
最近我会在 Delphi 2009 中重新过一遍正则表达式, 稍候. 因为原来的版本对汉字支持不好, 现在到底怎么样了, 不试试不好说.
  回复  引用  查看    
#8楼  2008-10-31 15:32 Rays [未注册用户]
--引用--------------------------------------------------
Rays: 1楼问的这个,我也想知道
--------------------------------------------------------

(?<=<title.*>).*(?=</title>)

这个可以实现,但在Delphi运行这个正则式会报错,在其它的正则表达式的测试工具里面不会,很正常,万老师这是什么原因?

  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-21 15:50 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: