正则表达式在C#中获取图像的SRC

我正在寻找一个正则表达式来隔离img的src值。 (我知道这不是最好的方法,但这是我在这种情况下必须做的)

我有一个字符串,其中包含简单的HTML代码,一些文本和图像。 我需要从该字符串中获取src属性的值。 到目前为止,我只设法将整个标签隔离开来。

string matchString = Regex.Match(original_text, @"(]+)>)").Value; 

 string matchString = Regex.Match(original_text, "", RegexOptions.IgnoreCase).Groups[1].Value; 

我知道你说你必须使用正则表达式,但如果可能的话我真的会给这个开源项目一个机会: HtmlAgilityPack

它真的很容易使用,我刚刚发现它,它帮助了我很多,因为我做了一些更重的html解析。 它基本上允许您使用XPATHS来获取元素。

他们的示例页面有点过时,但API非常容易理解,如果您对xpath有点熟悉,那么现在就可以了解它

查询的代码如下所示:(未编译的代码)

  List imgScrs = new List(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(htmlText);//or doc.Load(htmlFileStream) var nodes = doc.DocumentNode.SelectNodes(@"//img[@src]"); s foreach (var img in nodes) { HtmlAttribute att = img["src"]; imgScrs.Add(att.Value) } 

我尝试过Francisco Noriega建议的内容,但看起来HtmlAgilityPack的api已经改变了。 这是我解决它的方式:

  List images = new List(); WebClient client = new WebClient(); string site = "http://www.mysite.com"; var htmlText = client.DownloadString(site); var htmlDoc = new HtmlDocument() { OptionFixNestedTags = true, OptionAutoCloseOnEnd = true }; htmlDoc.LoadHtml(htmlText); foreach (HtmlNode img in htmlDoc.DocumentNode.SelectNodes("//img")) { HtmlAttribute att = img.Attributes["src"]; images.Add(att.Value); } 

你想要的正则表达式应该是:

 () 

希望这可以帮助。

这应该捕获所有img标签和src部分,无论它位于何处(类之前或之后等)并支持html / xhtml:D

  

您也可以使用后面的外观来完成它而无需拔出组

 (?<= 

记得在需要时逃避引号

这是我用来从字符串中获取标签的方法:

 ]*> 

这是我使用的那个:

 (?:(?!\1).)*)\1|(?[^\s>]+))[^>]*?> 

好的部分是它匹配以下任何一个:

    

它还可以匹配一些意外情况,如额外属性,例如: