0

我有各种 HTML 文档,我正在尝试提取以下链接:(1) 其他 html 文档,(2) 图像文件,例如 .jpg、.png 和 .bmp。我需要一个正则表达式来做到这一点,但似乎无法弄清楚。

每个 html 页面都有类似于以下的代码:


IMG style="MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px" align=right src="images/sample001.jpg">

IMG style="MARGIN-BOTTOM: 25px; MARGIN-LEFT: 25px" align=right src="images/sample002.png">

IMG style="MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px" align=right src="images/sample003.bmp">

href="javascript:parent.POPUP({url:'testDoc001.htm',type:'shared',width:600,height:645})">

href="javascript:parent.POPUP({url:'testDoc002.html',type:'shared',width:700,height:712})">


例如,正则表达式将对上述 HTML 进行操作并生成结果数组:

图片/sample001.jpg

图片/sample002.png

图像/sample003.bmp

testDoc001.htm

testDoc002.html

有人可以帮我吗?非常感谢。

4

3 回答 3

1

避免您在尝试使用正则表达式解析 HTML 时遇到的挫折和错误。使用HTML Agility Pack之类的 HTML 解析器。

于 2012-04-13T20:44:36.857 回答
0

in Perl

my $x = "your html";

#$1 - is a first group in match - (.+\.(jpg|png))
while ($x =~ /<img .* src="(.+\.(jpg|png))"/ig) {
    print "$1\n";
}

while ($x =~ /<a( .)* href=".*url:('|")(.+\.htm(l)?)('|").*/ig) {
    print "$3\n";
}

output:

images/sample001.jpg
images/sample002.png
testDoc001.htm
testDoc002.html

regexps <img .* src="(.+\.(jpg|png))" and <a( .)* href=".*url:('|")(.+\.htm(l)?)('|").* are similar in most languages. ig defines that search is case-insensitive and multiple matches

于 2012-04-13T20:40:31.757 回答
0

可能是图像的某些内容(使用组):

IMG[^>]*src="([^"]*)"

弹出窗口是这样的:

url:'([^']*)'
于 2012-04-13T20:18:19.493 回答