【问题标题】:Extract all Images from HTML whose width or height higher than a specified value - Regex从 HTML 中提取宽度或高度高于指定值的所有图像 - 正则表达式
【发布时间】:2011-09-14 07:23:51
【问题描述】:

我正在尝试使用经典 ASP (如 LinkedIn 或 Facebook)制作一个小链接共享功能。

我需要做的是获取远程 URL 的 HTML 并提取所有宽度大于 50px 的图像。

我可以抓取和获取 HTML,也可以使用这个正则表达式找到图像:

<img([^<>+]*)>

匹配; <img src="/images/icon.jpg" width="60" height="90" style="display:none"/>

然后我可以提取路径,但有时它与<img src="/track.php" style="display:none" width="1" height="1"/> 匹配,这不是真实图像。

无论如何,我觉得你会因为经典的 ASP 而生气,但我的公司....

我知道有很多关于这个问题的主题,而且大多数情况下,他们建议不要使用正则表达式,但我找不到使用经典 asp 的方法。这有什么成分吗?

问候

【问题讨论】:

  • 你不能用(理智的)正则表达式比较数字。
  • 图片标签不指定尺寸怎么办?
  • @SLaks♦:好的,那么我想我必须检查正则表达式与 Microsoft.XMLHTTP 匹配的每个图像。 link
  • Javascript 将是解决这个问题的方法。你能用吗?

标签: regex asp-classic html-content-extraction


【解决方案1】:

这会让你接近:

<img [^>]*width="(0?[1-9]\d{2,}|[5-9]\d)"[^>]*>

它接受宽度为 50 或更大的图像标签。

编辑:未指定宽度的标签:

<img [^>]*width="(0?[1-9]\d{2,}|[5-9]\d)"[^>]*>|<img ((?!width=)[^>])*>

【讨论】:

  • 疯狂的问题会产生更疯狂的解决方案....不过,我同意@SLaks。如果您有任何其他选择,请接受。
  • 感谢@agent-j,但正如@Francisc 所说,如果图像标签未指定尺寸,正则表达式将失败。
  • 如果高度在宽度之前怎么办?
  • 正则表达式使用经典 ASP 解析 HTML 的另一个死胡同 :)
  • [^&gt;]* 匹配到图像标签的末尾(或直到类似 alt="Hello &gt; world" 的东西。所以,height 属性在哪里并不重要。
猜你喜欢
  • 2011-09-14
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 2021-12-18
  • 2012-06-06
相关资源
最近更新 更多