从具有正则表达式的特定类名称的IMG标记中提取src链接

时间:2016-02-14 23:45:57

标签: html regex image class grep

当我们有:

<img src="http://example.com/myimageurl.jpg" />
<img class="my-image-class" src="http://example.com/myimageurl2.jpg" />

使用grep:

grep -Po '(?<=src=")[^"]*' filename

我把这两个图片网址都搞定了。

实际上我只需要具有特定类&#34; my-image-class&#34;的图像的网址。

我怎样才能做到这一点?

提前致谢!

2 个答案:

答案 0 :(得分:0)

你不应该用正则表达式解析html,但如果你正在寻找一个快速的grep
正则表达式,这是有效的。

<img\s+(?=[^>]*?(?<=\s)class\s*=\s*"my-image-class")[^>]*?(?<=\ssrc=")([^"]*)

扩展

 <img \s+ 
 (?=
      [^>]*? 
      (?<= \s )
      class \s* = \s* "my-image-class"
 )
 [^>]*? 
 (?<= \s src=" )
 ( [^"]* )                     # (1)

输出

 **  Grp 0 -  ( pos 49 , len 67 ) 
<img class="my-image-class" src="http://example.com/myimageurl2.jpg  
 **  Grp 1 -  ( pos 82 , len 34 ) 
http://example.com/myimageurl2.jpg  

答案 1 :(得分:0)

不确定您的用例是什么,但您可以通过在http://jsbin.com等网站粘贴HTML并编写几行jQuery来轻松完成此操作:

var imgs = [];

$('img').each( function() {
  var $img = $(this);

  if( $img.hasClass('my-image-class') ) {
    imgs.push($img.attr('src'));
  }
});

console.log(imgs);

演示:http://jsbin.com/cicoli/edit?html,js,console,output