请用正则表达式匹配如下信息:
特征源码段:>宾利欧陆</a><span>(483.6万)</span>
要求:使用正则表达式匹配到:宾利欧陆和483.6万这两个位置
提示:)</span>在源码页具有唯一性正则表达式源码正则表达式匹配

解决方案 »

  1.   

    \>.*?\<\/a\>\<span\>\(\d+(\.\d+)万)\<\/span\>
      

  2.   

                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);
                }
      

  3.   

    确实是正确的!
    跪求高手指点一下,为何我下面的这种匹配方式不对呢?
    (@">(?<name>.*?)</a><span>(?<price>.*?)")
      

  4.   

    )</span>这个结尾你没有用上吧如果有明确的规律,就不要用.*这种
      

  5.   

    .*?非贪婪匹配,在整个表达式匹配成功的前提下,尽可能少的匹配。
    @">(?<name>.*?)</a><span>(?<price>.*?)"
    这个表达式匹配到的price为空
    加一个'<'后变成@">(?<name>.*?)</a><span>(?<price>.*?)<",也可匹配到price
    不过把 .*? 换成 [^<]+ ,效率会高一点,在表达式匹配成功的情况下,使用贪婪模式进行了更少的回溯