<div id="div_page_roll1" style="display:none">&nbsp;&nbsp; <span class="page-Article">1</span> <a href="http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm" class="page-Article">2</a> <a href="http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm" class="nextpage">下一页</a>&nbsp;&nbsp;</div>
    <div id="div_currpage">&nbsp;&nbsp; <span class="page-Article">1</span> <a href="http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm" class="page-Article">2</a><a href="http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm" class="nextpage">下一页</a>&nbsp;&nbsp;</div>如上所示的一段html代码,我要用正则表达式取到
<div id="div_currpage">里面的2。我现在这样写:
<a href="(?<RESULT>http\://news.ihaet.com/.*?)">(?<PAGER>\d+?)</a>,但是这样<div id="div_page_roll1" style="display:none">里面的2也被匹配到了,不知道应该怎么写?注:必须是正则表达式,不能用程序控制!谢谢

解决方案 »

  1.   

    string result = Regex.Match(html,@"(?<=<div id=""div_currpage""((?!<div|</a).)+?<a[^>]+>)[^<]+").Value;
      

  2.   

    string result = Regex.Match(html,@"(?<=<div id=""div_currpage""((?!<div|</a).)+?<a[^>]+>)[^<]+").Value;
      

  3.   

    怎么不行了?你测试了么?    private static void TestRegex04()
        {
            string html = @" <div id=""div_page_roll1"" style=""display:none"">&nbsp;&nbsp; <span class=""page-Article"">1</span> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""page-Article"">2</a> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""nextpage"">下一页</a>&nbsp;&nbsp;</div>
        <div id=""div_currpage"">&nbsp;&nbsp; <span class=""page-Article"">1</span> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""page-Article"">2</a><a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""nextpage"">下一页</a>&nbsp;&nbsp;</div>
    ";
            string result = Regex.Match(html, @"(?<=<div id=""div_currpage""((?!<div|</a).)+?<a[^>]+>)[^<]+").Value;
            Console.WriteLine(result);
        }输出2
      

  4.   

    我用的RegExBuilder测试的,没用代码测试
      

  5.   

    (?<=<div id="div_currpage"((?!<div|</a).)+?<a[^>]+>)[^<]+如果用工具,基本的尝试也该知道吧转义字符去掉。你测试完不还是写代码用?
      

  6.   

     private static void TestRegex04()
        {
            string html = @" <div id=""div_page_roll1"" style=""display:none"">&nbsp;&nbsp; <span class=""page-Article"">1</span> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""page-Article"">2</a> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""nextpage"">下一页</a>&nbsp;&nbsp;</div>
        <div id=""div_currpage"">&nbsp;&nbsp; <span class=""page-Article"">1</span> <a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""page-Article"">2</a><a href=""http://news.ihaet.com/shuhua/2010-09/01/c_12505062_2.htm"" class=""nextpage"">下一页</a>&nbsp;&nbsp;</div>
    ";
            string result = Regex.Match(html, @"(?<=<div id=""div_currpage""((?!<div|</a).)+?<a[^>]+>)[^<]+").Value;
            Console.WriteLine(result);
        }