RegEx帮助:需要抢图像(经典ASP)

时间:2014-05-08 21:09:33

标签: regex asp-classic

我在经典asp中使用以下表达式,成功抓取任何带有.jpg和.png后缀的图像标记。

re.Pattern = " ]*src=[""'][^ >]*(jpg|png)[""']"

我发现的问题是我需要使用的许多网站实际上并没有使用后缀。所以,我需要新的正则表达式来找到一个图像标记并抓取src属性中的任何内容。

这听起来很简单,如果没有自己编写,那么在Classic ASP中找到一个正则表达式来实现这一点似乎是不可能的(这是不可能的)。

请告知。

1 个答案:

答案 0 :(得分:3)

要明确匹配img src你可以做的事情:

\<img src\=\"(\w+\.(gif|jpg|png)\")

然后,如果你只想要img src中的值,你可以匹配任何以图片扩展名结尾的引号(但这可能会让你误报,这取决于你想):

\w+\.(gif|jpg|png)

但是为了确保它跟随img src而只匹配该值,你需要一个负面的预测来做到这一点(注意我在那里添加了一个匹配的组):

(?!.*\<img src\=\")(\w+\.(gif|jpg|png))

现在要包含在图片源中添加图片链接的可能性:

(?!.*\<img src\=\")([\/\.\-\:\w]+\.(gif|jpg|png)?[\?\w+\%]+)

然后让我们通过修复(gif|jpg|png)之后的懒惰量词并将其移动到下一组之后(与JS链接中可能获得的数据相匹配等)来消除我们得到的误报。并确保我们有一个结束语:

(?!.*\<img src\=\")([\/\.\-\:\w]+\.(gif|jpg|png)([\?\w+\%]+)?)(?=\")

注意:这将匹配此数据,但正则表达式不会解析 HTML,我个人不建议使用正则表达式来查看HTML数据,除非您&#39 ;根据具体情况再做一次。如果您想通过脚本进行一些URL /图像抓取,请查看XML / HTML解析器。

示例数据:

<a href="myfile.htm"><img src="picture.gif"></a>
<a href="index.htm"><img src="pic859.jpg"></a>
<a href="page-57.htm"><img src="859.png"></a>
<img id="test1" class="answer1" src="text.jpg">
<img src="http://media.site.com/media/img/staff/2013/ROTHBARD-350_s90x126.jpg?e3e29f4a7131cd3bc7c4bf334be801215db5e3c2%22%3E">
<img src="yahoo.com/images/imagename.gif">

HTML Source