用于查找带有 src 到 Internet 的 HTML 图像标记的正则表达式模式

Regex pattern for finding HTML image tag with src to the internet

我在理解正则表达式模式语法时遇到一些问题。 我正在使用 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 的标签。 我在 google 搜索中找到了这个:

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

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

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

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

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

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

正则表达式案例:Regex

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

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

有关匹配 URL 的更广泛的 Regex 解决方案,请参阅 What is a good regular expression to match a URL?