今天同事叫帮忙写一个正则表达式,用于匹配网站<img>标签内的所有的src属性的值,
也就是图片的地址,这个地址里必须包括有logo字样,并且必须是以.gif,.jpg,.png的图片,
本人的正则达表式,可谓很入门级,也就硬着答应吧,最后搞鼓了2小时终于有下面这个:
(?<=<img[^<>]*?\ssrc=(?<i>["']?))[^'"]*?(logo)+?.*?\.(gif|jpg|png)(?=\k<i>.*?>)
测试表达式
测试以下文本:
//文本开始
1、<img src=http://www.cnblogs.com/1/logo.gif /> 没有引号
2、<img src="http://www.cnblogs.com/2/logo.gif" />有引号,单引或双引都行
3、<img src=../iamges/3/logo.gif />相对的路径,没有引号
4、<img src='iamges/4/logo.gif' />相对的路径,有引号
5、<img src="http://www.cnblogs.com/5/logo.gif' />错误的写法,双引开头,单引结束,封闭符号不一致辞
6、<img src="http://www.cnblogs.com/6/logo.gifd" />含有logo字样,但不是以.gif或.jpg或.png结尾,也将不匹配。
7、<img src="http://www.cnblogs.com/7/xxxxxlog.gif" />以.gif或.jpg或.png结尾,但不含有logo字样,也将不匹配。
//文本结束
匹配结果:
得到4条匹配的图片URL:
http://www.cnblogs.com/1/logo.gif
http://www.cnblogs.com/2/logo.gif
../iamges/3/logo.gif
iamges/4/logo.gif
可能有很多我考虑不周到的地方,请大家指出,虚心向各位园友学习。
这也是我发这个贴子的主要原因,不胜感激。