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

时间:2010-11-23 15:01:39

标签: c# regex image src

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

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

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

8 个答案:

答案 0 :(得分:43)

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

答案 1 :(得分:12)

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

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

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

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

 List<string> imgScrs = new List<string>();
 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)
 }

答案 2 :(得分:6)

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

        List<string> images = new List<string>();
        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);
        }

答案 3 :(得分:2)

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

(<img.*?src="([^"])".*?>)

希望这有帮助。

答案 4 :(得分:1)

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

<img.+?src="(.+?)".+?/?>

答案 5 :(得分:1)

您也可以使用后面的方式来执行此操作而无需拉出组

(?<=<img.*?src=")[^"]*

如果需要,请记住转义引号

答案 6 :(得分:0)

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

</? *img[^>]*>

答案 7 :(得分:0)

这是我使用的那个:

<img.*?src\s*?=\s*?(?:(['"])(?<src>(?:(?!\1).)*)\1|(?<src>[^\s>]+))[^>]*?>

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

<img src='test.jpg'>
<img src=test.jpg>
<img src="test.jpg">

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

<img src = "test.jpg" width="300">