c# - 图片 url 的正则表达式

标签 c# regex

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

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

我想这会很容易写,但是我不是一个很棒的正则表达式。我想这些部分看起来像这样

  1. ^((https?\:\/\/)|(\/{1,2}))
  2. (有什么想法吗?)
  3. (.(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/

相关文章:

c# - log4net 性能 : should i check log level before trying to log?

c# - 是否可以在运行时向现有类添加方法?为什么或者为什么不?

c# - 是否有可能使用 .NET Core 获取未在 EFCore 中提交的添加项?

c# - 可空日期时间到字符串

python - 正则表达式替换字符串末尾的 '...'

c# 我可以防止我的构造函数参数与 VBA 实例化冲突吗?

sql - 计算字段中的位数

regex - 需要制定 htaccess 规则来阻止空用户代理,除非请求包含特定字符串

regex - Perl 正则表达式查找精确单词

php - 未知修饰符 'g' PHP 正则表达式错误