使用src查找HTML图像标记到互联网的正则表达式模式

时间:2017-03-14 14:00:12

标签: c# html regex

我在理解正则表达式模式语法时遇到了一些问题。 我正在使用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开头。

有没有人可以帮我这个?

1 个答案:

答案 0 :(得分:1)

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

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

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

正则表达式案例:Regex

修改 需要注意的是,有时链接可以从//开始。以下正则表达式应该这样做:

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

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