我需要一个正则表达式来提取图像和 HTML 文档

本文关键字:提取 图像 文档 HTML 正则表达式 一个 | 更新日期: 2023-09-27 18:31:15

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

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


IMG 样式="边距底部:20px;左边距:20px" 对齐=右 src="图像/样本001.jpg">

IMG 样式="边距-底部:25px;左边距:25px" 对齐=右 src="images/sample002.png">

IMG 样式="边距底部:20px;左边距:20px" 对齐=右 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 进行操作并生成生成的数组:

图片/样本001.jpg

图片/样本002.png

图片/样本003.bmp

测试文档001.htm

测试文档002.html

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

我需要一个正则表达式来提取图像和 HTML 文档

省去尝试使用正则表达式解析 HTML 时遇到的挫败感和错误。使用 HTML 解析器,如 HTML Agility Pack。

也许图像

的内容(使用组):

IMG[^>]*src="([^"]*)"
弹出窗口

是这样的:

url:'([^']*)'
  • 另请参阅:正则表达式测试工具:http://rubular.com/r/W5aSrgMD8B

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";
}

输出:

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

正则表达式<img .* src="(.+'.(jpg|png))"<a( .)* href=".*url:('|")(.+'.htm(l)?)('|").*在大多数语言中是相似的。 ig定义搜索不区分大小写且多个匹配