使用以下代码获取站点中的所有 url
while( $html =~ m/<A HREF=\"(.*?)\"/g ) {
print "$1\n";
}
这给了我所有的 URL。但我的问题是我只想提取以结尾的 url
1) .pdf
或者
2) .doc
例如
http://nc.casaforchildren.org/files/public/site/jobs/CSO.pdf
谁能帮我谢谢。
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
>
如果您的分组(.*?)
与所有 URL 匹配,则应使用:
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
它只匹配前两个 URL。
我想你需要搜索不区分大小写:
while( $html =~ m/<A HREF="(.*?\.(?:pdf|doc))"/ig ) {
print "$1\n";
}