我有一个C#Regex如下:
Regex r = new Regex(@"(?<value1>.*?)<a.*?href=(""|')(?<href>.*?)(""|').*?>(?<value2>.*?)</a>(?<value3>.*?)");
我可以获得value1,href,value2完美的文本。但是,value3总是&#34;&#34;。
我错过了获得锚点结束标记()之后的文本。
答案 0 :(得分:6)
如果您使用 Parser ,则不会返回空值,因为使用正则表达式解析HTML并不是解决此问题的最佳方法。但要解决这个问题,请从表达式末尾删除非贪婪量词,使其变得贪婪(匹配尽可能多的)。
(?<value3>.*?)
^ Remove non-greedy quantifier
让它贪婪:
(?<value3>.*)
请参阅Live Demo