图像url的正则表达式
本文关键字:正则表达式 url 图像 | 更新日期: 2023-09-27 17:57:52
我已经在使用HtmlAgilityPack解析页面,并获得大多数img源代码。然而,许多网站在img src属性以外的地方包含img url(例如,内联javascript、不同的属性、不同的元素)。我想撒一个稍微宽一点的网,并在整个html字符串上运行regex,在regex中捕获以下内容。
- 必须以http://、https://、//或开头/
- 然后,任意数量的有效url路径字符
- 必须以.jpeg、.jpg、.png或.gif结尾
我想这写起来很简单,但我不是一个很棒的正则表达式生成器。我想零件会像这个
- ^((https?'':''/''/)|(''/{1,2}))
- (有什么想法吗?)
- (.(jpe?g|png|gif))$
有人能帮我填空吗?
感谢
回答
(https?:)?//?[^''"<>]+?'.(jpg|jpeg|gif|png)
有很多用于匹配URL的特殊正则表达式,但据我所知,没有一个声称完全可靠。然而,这将试图满足你的条件。
根据[1],有效的URL字符(不保留)是字母数字和符号$-_.+!*'(),
。然而,也有保留字符,它们是+/?%#&
,由[2]简明地给出——我在RFC的大部分中找不到列表。我知道还有其他字符用于查询字符串,即=;
,所以这些字符需要包含在内。然后你会遇到这样的问题,不是每个人都能正确地编码他们的URL字符,所以在其他事情中可能会出现空格(我不知道如何解释,因为浏览器如何自动更正可能会令人困惑)。
因此,你可能只是假设任何东西都可以在URL中,但它必须以特定的东西开始,以特定的(你提供的)东西结束,但这仍然是不可靠的。
@(https?:)?//?[^'"<>]+?'.(jpg|jpeg|gif|png)@
(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*'.(?:jpg|gif|png))(?:'?([^#]*))?(?:#(.*))?