使用以下代码即可获取网站中的所有网址
while( $html =~ m/<A HREF=\"(.*?)\"/g ) {
print "$1\n";
}
它给了我所有的URL。但我的问题是我想用
提取网址结尾1).pdf
或
2).doc
例如
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdf
任何人都可以帮助我。
答案 0 :(得分:1)
m/<A HREF=\"(.*?(.pdf|.doc))\"/g
它在我的地方工作:
> cat temp
<A HREF="http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdf">bwfjbwej</A>
<A HREF="http://nc.casaforchildren.org/files/public/site/jobs/CSO.xls">bwfjbwej</A>
<A HREF="http://nc.casaforchildren.org/files/public/site/jobs/CSO.doc">bwfjbwej</A>
> perl -lne 'print $1 if(/<A HREF=\"(.*?(.pdf|.doc))\"/g)' temp
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdf
http://nc.casaforchildren.org/files/public/site/jobs/CSO.doc
>
答案 1 :(得分:1)
如果您的分组(.*?)
与所有网址匹配,则应该使用:
while( $html =~ m/<A HREF=\"(.*?(\.pdf|\.doc))\"/g ) {
print "$1\n";
}
请注意,这也与.pdf
匹配,这可能不是您正在搜索的内容。模式.*?
是贪婪的,非常危险的。
/编辑
上试了一下\b(.*(\.pdf|\.doc))\b
的
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdf
http://nc.casaforchildren.org/files/public/site/jobs/CSO.doc
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdd
.pdf
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdfawd
它只匹配前两个网址。
答案 2 :(得分:1)
我猜你需要搜索不区分大小写的内容:
while( $html =~ m/<A HREF="(.*?\.(?:pdf|doc))"/ig ) {
print "$1\n";
}