我需要一个正则表达式来提取图像和 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 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
定义搜索不区分大小写且多个匹配