正则表达式从img标签获取src值

时间:2009-06-29 15:12:45

标签: c# html regex

我使用以下正则表达式获取HTML文档中第一个src标记的img值。

string match = "src=(?:\"|\')?(?<imgSrc>[^>]*[^/].(?:jpg|png))(?:\"|\')?"

现在它捕获了我不需要的总src属性。我只需要src属性中的url。怎么做?

3 个答案:

答案 0 :(得分:6)

使用其他内容解析您的HTML。 HTML is not regular因此正则表达式根本不适合解析它。

如果HTML严格,请使用HTML解析器或XML解析器。使用XPath获取src属性的值要容易得多:

//img/@src

XML解析内置于System.Xml namespace。它非常强大。如果HTML不严格,HTML parsing会有点困难,但是有很多库会为你做这件事。

答案 1 :(得分:4)

请参阅When not to use Regex in C# (or Java, C++ etc)Looking for C# HTML parser

PS,如何在评论中添加指向StackOverflow问题的链接?

答案 2 :(得分:1)

你的正则表达式应该(英文)匹配引号之后的任何字符,这不是src属性中标记内的引号。

在perl正则表达式中,它会是这样的:

/src=[\"\']([^\"\']+)/

运行此网址后,该网址将位于$1

当然,这假设引用了src属性中的url。如果不是,您可以相应地修改[]括号中的值。