如何使用正则表达式提取HTML img源?

3 regex vbscript asp-classic

我需要从HTML文档中的所有图像标记中提取src元素.

因此,输入是一个HTML页面,输出将是指向图像的URL列表:ex ... http://www.google.com/intl/en_ALL/images/logo.gif

以下是我到目前为止所提出的:

<img\s+src=""(http://.*?)
Run Code Online (Sandbox Code Playgroud)

这不适用于src不在img标记之后的标记,例如:

<img height="1px" src="spacer.gif">
Run Code Online (Sandbox Code Playgroud)

有人可以帮助完成这个正则表达式?这很简单,但我认为这可能是获得答案的更快捷方式.

Ani*_*van 19

以下正则表达式代码段应该有效.

<img[^>]+src="([^">]+)"
Run Code Online (Sandbox Code Playgroud)

它会查找以开头的文本<img,其次是没有一个或多个字符>,然后src=".然后,它抓住了这一点,并在未来之间的一切">.

但是,如果可能的话,使用真正的HTML解析器.它更加坚固,可以更好地处理边缘情况.

  • `<img\s.*?src =(?:'|")([^'">] +)(?:'| |)`这将查找以<img;然后一个空格开头的字符串;然后是0或更多的东西;然后`src =`单/双引号(没有捕获);然后捕获一个或多个不是单引号或双引号或`>`的东西;然后是单/双引号(没有捕获)这个适用于单/双引号,并且不会像"data-src"那样用"src"来获取其他属性.http://www.phpliveregex.com/p/kDH (4认同)
  • 它不适用于单引号标记,并记住HTML实际上不需要属性引用,除非它们包含空格. (3认同)

sle*_*ske 10

你不想那样做.正确解析HTML是一个非常复杂的问题,正则表达式不是一个好的工具.

请参阅例如, 您是否可以提供一些为什么难以使用正则表达式解析XML和HTML的示例?

这是一个很好的解决方案:

我如何以编程方式检查HTML文档


rya*_*lit 5

你可以用 Javascript 很容易地做到这一点。一个例子如下:

var images = document.getElementsByTagName("img");

for (i=0; i < images.length; i++)
{
   // get image src
   var currImage = images[i].src;

   // do link creation here
} 
Run Code Online (Sandbox Code Playgroud)