【问题标题】:Regex pattern for finding HTML image tag with src to the internet用于在 Internet 上查找带有 src 的 HTML 图像标记的正则表达式模式
【发布时间】:2017-03-14 14:00:12
【问题描述】:

我在理解正则表达式模式语法时遇到了一些问题。 我正在使用 Outlook interop 来查看 email.msg 的 HTMLbody

我想删除所有引用互联网的图片。 所以我使用Regex.Replace 来查找所有图像标签并用文本替换它们。

这就是我的:

string altText = " <i>*Reference to picture on the internet removed*</i> "; string b = Regex.Replace(a, @"(<img([^>]+)>)", altText);

这可行,但我想从互联网上找到只有src 的标签。 我在谷歌搜索中找到了这个:

string matchString = Regex.Match(a, "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;

但这无济于事,因为看起来所有图像都有src标签。我的目标是尽可能在Regex 中编写模式语法,我检查源(src)是否以 http、https 或 www 开头。

有没有人可以帮助我解决这个问题?

【问题讨论】:

标签: c# html regex


【解决方案1】:

我建议使用 HTML 解析器来查找您的图像标签,而不是直接使用正则表达式。然后,如果需要,您可以使用正则表达式来检查 src 属性。

与此同时,我相信以下正则表达式会产生您所期望的结果:

<img.+?src=[\"']((?:https?|www).*)[\"'].*?>

正则表达式案例:Regex

编辑 还要注意的是,有时链接可以以// 开头。以下正则表达式应该这样做:

<img.+?src=[\"']((?:https?|www|//).*)[\"'].*?>

如需更广泛的正则表达式解决方案匹配网址,请参阅What is a good regular expression to match a URL?

【讨论】:

  • 你推荐什么 HTML 解析器?
  • Html Agility Pack 是我常用的:nuget.org/packages/HtmlAgilityPack
  • 谢谢!这正是我想要的。我还将检查 HTML 解析器。
猜你喜欢
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2016-08-26
  • 2016-06-26
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多