我已经在使用 HtmlAgilityPack 解析页面,并获取大多数 img 源。然而,许多网站在 img src 属性以外的地方包含 img url(例如,内联 javascript、不同的属性、不同的元素)。我想撒一个稍微宽一点的网,并在整个 html 字符串上运行正则表达式,在正则表达式中捕获以下内容。
- 必须以 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)@
关于c# - 图片 url 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172748/