在HTML文档中查找image标记中的第一个图像的正则表达式是什么?我之前的尝试并没有真正起作用,因为它们只是基于.jpg"进行匹配,并且没有考虑到边缘情况,比如在结束时具有缓存缓冲器时间戳的图像(asdf.jpg?581291823)
编辑:我使用的是Node.js。我想做HTML解析,但是我们有很多文档要解析,所以我不确定HTML解析是否是最好的选择,因为它需要相当多的时间。
发布于 2011-07-08 00:19:43
正如anubhava正确指出的那样,正则表达式在解析HTML时并不是100%可靠的。然而,对于一次性任务(即非生产代码),正则表达式解决方案可以做得很好(而且速度也很快):
将来自第一个IMG元素的图像URL文件名(sans查询或片段)捕获到组$1中
<img\b[^>]+?src\s*=\s*['"]?([^\s'"?#>]+)
请注意,在某些边缘情况下,这是不起作用的。
编辑:将">"添加到被取反的SRC属性值字符类。
发布于 2011-07-08 00:17:02
这是一个很好的例子,说明了使用正则表达式时棘手且不可靠的,以及使用HTML解析器时几乎非常简单的。为此使用解析器,而不是regex。
您还没有说您正在使用哪种语言,但是我听说过一些关于Beautiful Soup、HTML Purifier和HTML Agility Pack的非常好的消息,它们分别使用Python和.NET。相信我--使用save yourself some pain并使用它们。
编辑:如果你必须使用正则表达式,那就使用@‘s吧。
发布于 2011-07-08 00:04:42
抓取html,一个简单且非常松散的正则表达式是:/\<img.*?src="(.*?)"/
使用真正的DOM解析器当然是首选方法。
https://stackoverflow.com/questions/6613178
复制相似问题