我在理解正则表达式模式语法时遇到了一些问题。
我正在使用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开头。
有没有人可以帮我这个?
答案 0 :(得分:1)
我建议使用HTML解析器来直接查找图像标记而不是正则表达式。然后,您可以使用正则表达式来检查src属性(如果需要)。
与此同时,我相信以下正则表达式将产生您期望的结果:
<img.+?src=[\"']((?:https?|www).*)[\"'].*?>
正则表达式案例:Regex
修改强>
需要注意的是,有时链接可以从//
开始。以下正则表达式应该这样做:
<img.+?src=[\"']((?:https?|www|//).*)[\"'].*?>
有关更广泛的Regex解决方案匹配网址,请参阅What is a good regular expression to match a URL?