string src = ">宾利欧陆</a><span>(483.6万)</span>"; Regex reg = new Regex(@"\>(?<name>[^\<]+)\</a\>\<span\>\((?<price>[^\)]+)\)\</span\>"); var ms = reg.Matches(src); foreach(Match m in ms) { System.Diagnostics.Debug.WriteLine(m.Groups["name"].Value + ":" + m.Groups["price"].Value); }
Regex reg = new Regex(@"\>(?<name>[^\<]+)\</a\>\<span\>\((?<price>[^\)]+)\)\</span\>");
var ms = reg.Matches(src);
foreach(Match m in ms)
{
System.Diagnostics.Debug.WriteLine(m.Groups["name"].Value + ":" + m.Groups["price"].Value);
}
跪求高手指点一下,为何我下面的这种匹配方式不对呢?
(@">(?<name>.*?)</a><span>(?<price>.*?)")
@">(?<name>.*?)</a><span>(?<price>.*?)"
这个表达式匹配到的price为空
加一个'<'后变成@">(?<name>.*?)</a><span>(?<price>.*?)<",也可匹配到price
不过把 .*? 换成 [^<]+ ,效率会高一点,在表达式匹配成功的情况下,使用贪婪模式进行了更少的回溯