用正则表达式提取网页内容--选秀榜selectop.com网站内容管理系统之五
初用正则式是研究PHP下的一个小蜜蜂采集器beecollector,可以说正则式是PHP的专利。要模式匹配就要用到它。
delphi下有一个组件PerlRegEx,功能与PHP差不多。最新的开源版本可从http://www.regular-expressions.info/delphi.html下下载,发布要加上pcrelib.dll。
串: '(.+?)' 是匹配所有字符,不包括回车等
串: '([\S\s]+?)' 匹配所有,用于内容匹配有效,只到定义开始,结尾串,就可以找到所需要的。
DELPHI读取网页源文件和获取字符串,一文中http://www.blogbus.com/public/tb.php/5090525/42810637/5b12af31ab70d28d43bcd21cd63f9b55
用到字符串比较,也可行,但循环匹配定位比较麻烦。
用全匹配代替字符串比较,可以较简单解决这一矛盾。简要代码如下:
//正则表达式
sStart:= regex1.EscapeRegExChars(qry1.fieldbyname('beginstr').asstring);
sEnd:= regex1.EscapeRegExChars(qry1.fiebyname('endstr').asstring);
regex1.regex:= sStart + '([\S\s]+?)' + sEnd ;
regex1.Compile;
perlReg.start的处理,做了一个测试,发现手工处理start,再进行循环匹配,提示错误。还是用回matchagain,进行循环匹配,以完成整个网页的处理。
选秀榜网站www.selectop.com 下的博客榜,用到以上方法,采集出博文的连接,标题。
delphi下有一个组件PerlRegEx,功能与PHP差不多。最新的开源版本可从http://www.regular-expressions.info/delphi.html下下载,发布要加上pcrelib.dll。
串: '(.+?)' 是匹配所有字符,不包括回车等
串: '([\S\s]+?)' 匹配所有,用于内容匹配有效,只到定义开始,结尾串,就可以找到所需要的。
DELPHI读取网页源文件和获取字符串,一文中http://www.blogbus.com/public/tb.php/5090525/42810637/5b12af31ab70d28d43bcd21cd63f9b55
用到字符串比较,也可行,但循环匹配定位比较麻烦。
用全匹配代替字符串比较,可以较简单解决这一矛盾。简要代码如下:
//正则表达式
sStart:= regex1.EscapeRegExChars(qry1.fieldbyname('beginstr').asstring);
sEnd:= regex1.EscapeRegExChars(qry1.fiebyname('endstr').asstring);
regex1.regex:= sStart + '([\S\s]+?)' + sEnd ;
regex1.Compile;
perlReg.start的处理,做了一个测试,发现手工处理start,再进行循环匹配,提示错误。还是用回matchagain,进行循环匹配,以完成整个网页的处理。
选秀榜网站www.selectop.com 下的博客榜,用到以上方法,采集出博文的连接,标题。