我使用以下正则表达式获取HTML文档中第一个src
标记的img
值。
string match = "src=(?:\"|\')?(?<imgSrc>[^>]*[^/].(?:jpg|png))(?:\"|\')?"
现在它捕获了我不需要的总src
属性。我只需要src
属性中的url。怎么做?
答案 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。如果不是,您可以相应地修改[]
括号中的值。