又是正则
本帖最后由 lxsky 于 2013-5-30 12:07 编辑一个网页文件 我需要通过正则 将里面的所有文章内容和图片链接搞出来,
下面是测试的代码,源代码只是$SR多了很多而且无规律,图片和文章混在一起,还有很多无用的html标签之类。
但是正则后有个奇怪的问题:
表达式//+"取得了//url“,然后我添加()只取url
但是发现多了几个空白数组:对比A和B的结果,B的结果多了2,4,6 ,且都是空白,为什么呢??????#include <Array.au3>
Dim $SR = '<p><b fromubb="1"><font size="2"> 项目地址:北京市顺义区­</font>'& _
'<p><font size="2"> 项目占地:总用地364亩(约24万平米)­</font></p>'& _
'<p><a href="http://www.chla.com.cn/upload/0517146281.jpg#" target="_blank">' & _
'<a href="http://b40.p.com/http_d.cgi?/rurl4_b=79e8131e6cfa4f&a=33&b=40" appendurl="1" target="_blank">'& _
'<img alt="图片" appendurl="1" border="0" src="http://b40.q.com/http_d.cgi?/rurl4_b=79eadfa4f&a=33&b=40" />'& _
'</a>'& _
'</a>'& _
'<wbr/>'& _
'</p>'
Dim $htmlUrl = StringRegExp($SR, '>([^<\n]+)<|//+"',3) ;<========A
;Dim $htmlUrl = StringRegExp($SR, '>([^<\n]+)<|//(+)"',3) ;<========B
_ArrayDisplay($htmlUrl, UBound($htmlUrl))
#CS
A的结果,正则
项目地址:北京市顺义区­
项目占地:总用地364亩(约24万平米)­
//www.chla.com.cn/upload/0517146281.jpg#"
//b40.p.com/http_d.cgi?/rurl4_b=79e8131e6cfa4f&a=33&b=40"
//b40.q.com/http_d.cgi?/rurl4_b=79eadfa4f&a=33&b=40"
B的结果
项目地址:北京市顺义区­
项目占地:总用地364亩(约24万平米)­
www.chla.com.cn/upload/0517146281.jpg#
b40.p.com/http_d.cgi?/rurl4_b=79e8131e6cfa4f&a=33&b=40
b40.q.com/http_d.cgi?/rurl4_b=79eadfa4f&a=33&b=40
#CE 本帖最后由 flyeblue 于 2013-5-30 12:17 编辑
url的正则表达式\<a\shref="([^"]+)" img标签的正则表达式<img[^/]+\ssrc="([^"]+)" 这样就可以获得所有链接
至于图片第一个需要再次分析
另外用_IELinkGetCollection()要更简单方便啊 本帖最后由 lixiaolong 于 2013-5-30 13:58 编辑
#include <Array.au3>
Dim $SR = '<p><b fromubb="1"><font size="2"> 项目地址:北京市顺义区­</font>'& _
'<p><font size="2"> 项目占地:总用地364亩(约24万平米)­</font></p>'& _
'<p><a href="http://www.chla.com.cn/upload/0517146281.jpg#" target="_blank">' & _
'<a href="http://b40.p.com/http_d.cgi?/rurl4_b=79e8131e6cfa4f&a=33&b=40" appendurl="1" target="_blank">'& _
'<img alt="图片" appendurl="1" border="0" src="http://b40.q.com/http_d.cgi?/rurl4_b=79eadfa4f&a=33&b=40" />'& _
'</a>'& _
'</a>'& _
'<wbr/>'& _
'</p>'
Dim $htmlUrl = StringRegExp($SR, '(项目[^&]+)|http://[^"]+',3)
_ArrayDisplay($htmlUrl, UBound($htmlUrl))
#include <Array.au3>
Dim $SR = '<p><b fromubb="1"><font size="2"> 项目地址:北京市顺义区­</font>'& _
'<p><font size="2"> 项目占地:总用地364亩(约24万平米)­</font></p>'& _
'<p><a href="http://www.chla.com.cn/upload/0517146281.jpg#" target="_blank">' & _
'<a href="http://b40.p.com/http_d.cgi?/rurl4_b=79e8131e6cfa4f&a=33&b=40" appendurl="1" target="_blank">'& _
'<img alt="图片" appendurl="1" border="0" src="http://b40.q.com/http_d.cgi?/rurl4_b=79eadfa4f&a=33&b=40" />'& _
'</a>'& _
'</a>'& _
'<wbr/>'& _
'</p>'
Dim $htmlUrl = StringRegExp($SR, '(项目[^&]+)|http://.*?jpg[^"]+',3)
_ArrayDisplay($htmlUrl, UBound($htmlUrl))
呵呵,越来越简洁了,学习中 本帖最后由 lxsky 于 2013-5-31 10:32 编辑
可是出现1楼情况的原因是什么呢?????我试了一下只要涉及类似()|()的情况就会在后面()取得的数组里面间隔出现空数组 回复 5# lxsky
你试试下面两个正则就明白多了的那两个是啥了|//(+)"
>([^<\n]+)<|
页:
[1]