随笔 - 1656  文章 - 26 评论 - 6692 trackbacks - 253

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

随笔分类(1869)

随笔档案(1584)

积分与排名

  • 积分 - 1724486
  • 排名 - 10

最新评论

//贪婪匹配
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 万一 阅读(1263) 评论(11)  编辑 收藏 网摘 所属分类: 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运行这个正则式会报错,在其它的正则表达式的测试工具里面不会,很正常,万老师这是什么原因?

  回复  引用    
(?<=<title>)(.*?)(?=</title>)
  回复  引用    
pcre 不支持在环视中加量词
  回复  引用    
#11楼 2009-06-17 22:38 fob[未注册用户]
<OPTION value=GT countrynum="502">Guatemala</OPTION> <OPTION value=GN countrynum="224">Guinea</OPTION> <OPTION value=GW countrynum="245">Guinea-Bissau</OPTION> <OPTION value=IR countrynum="98">Iran (Islamic Republic of)</OPTION> <OPTION value=IQ countrynum="964">Iraq</OPTION>

万老师 如果我想取出上面option中的
value、countrynum 和 option文本,如:
GT 502 Guatemala
GN 224 Guinea
GW 245 Guinea-Bissau
IR 98 Iran (Islamic Republic of)
IQ 964 Iraq

请问该怎么写表达式?

  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1009031




相关文章:

相关链接: