图像URL的正则表达式

时间:2011-05-30 05:56:41

标签: c# regex

我已经使用HtmlAgilityPack解析页面,并获得大多数img源代码。然而,许多网站在img src属性之外的地方包括img url(例如内联javascript,不同的属性,不同的元素)。我想投一个稍微宽一点的网并在整个html字符串上运行一个正则表达式,在正则表达式中捕获以下内容。

  1. 必须以http://,https://,//或/
  2. 开头
  3. 然后,任意数量的有效网址路径字符
  4. 必须以.jpeg,.jpg,.png或.gif
  5. 结尾

    我想这写起来很简单,但我不是一个很棒的正则表达式。我想这些部件看起来像这样

    1. ^((https?\:\ / \ /)|(\ / {1,2}))
    2. (任何想法?)
    3. (。(jpe?g | png | gif))$
    4. 任何人都可以帮助我填补空白吗?

      由于

      答案

      (https?:)?//?[^\'"<>]+?\.(jpg|jpeg|gif|png)
      

2 个答案:

答案 0 :(得分:7)

有许多用于匹配网址的临时正则表达式,但我所知道的没有一个声称完全可靠。但是,这个会尝试满足您的条件。

根据[1],有效的URL字符(未保留)是字母数字和符号$-_.+!*'(),。但是,也有保留字符,+/?%#&由[2]简明地给出 - 我在RFC的大部分内找不到列表。我知道有其他字符用于查询字符串,即=;,所以那些需要包含。然后你会遇到不是每个人都正确编码他们的URL字符的问题,因此空间可能存在于其他事物中(我不知道如何解释浏览器如何自动纠正事情可能会造成神秘感。)

因此,您可能只是假设任何内容都可以在URL中,但只是它必须从特定内容开始并以特定内容(您提供的内容)结束,但这仍然是不可靠的。

@(https?:)?//?[^'"<>]+?\.(jpg|jpeg|gif|png)@

答案 1 :(得分:0)

(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\.(?:jpg|gif|png))(?:\?([^#]*))?(?:#(.*))?