<TR>
          <TD>性 别: </TD>
          <TD>男 </TD>
上面的是某个html页面的一部分,我想获得性别的值:男======================================================
 String[] rS2 = new String[1];
        string s2 = buffer;
        string regexStr2 = "<TR><TD>性 别: </TD><TD>(?<sex>[^</TD>]+)";
        string p2 = @regexStr2;
        Regex reg2 = new Regex(p2);
        Match m2 = reg2.Match(s2);
        rS2[0] = m2.Groups["sex"].Value;
        Response.Write(rS2[0]);这样没有得到,我不太懂正则,请告知,谢谢

解决方案 »

  1.   

    string regexStr2 = "<TR>[^<]*<TD>性 别: </TD>[^<]*<TD>(?<sex>[^<]+)</TD>";
      

  2.   

    按你写的这样改一下string regexStr2 = "<TR>\s*<TD>性 别: </TD>\s*<TD>(?<sex>[^<]+)</TD>";你没有考虑到换行符和空格
      

  3.   

    另外就是[^</TD>]这里的用法有误使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。在这里使用[^<]就可以,这样就不会包含</TD>在内了
      

  4.   

    谢谢楼上各位,不过出现错误啊:“/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS1009: 无法识别的转义序列源错误: 行 71:         String[] rS2 = new String[1];
    行 72:         string s2 = buffer;
    行 73:        string regexStr2 = "<TR>\s*<TD>性 别: </TD>\s*<TD>(?<sex>[^<]+)</TD>";
    行 74:         string p2 = @regexStr2;
    行 75:         Regex reg2 = new Regex(p2);
     
      

  5.   

    sorry,漏了一个@string regexStr2 = @"<TR>\s*<TD>性 别: </TD>\s*<TD>(?<sex>[^<]+)</TD>";
      

  6.   

    string regexStr2 = "<TR>[ \f\n\r\t\v]<TD>性 别: </TD>[ \f\n\r\t\v]<TD>(?<sex>[^</TD>]+)";
      

  7.   

    谢谢过客,不过现在还是匹配不出值来啊,请看我的程序:其中s2是整个页面的html代码。public void GetData(string buffer)
        {
                    String[] rS2 = new String[1];
            string s2 = buffer;
            string regexStr2 = @"<TR>\s*<TD>性 别: </TD>\s*<TD>(?<sex>[^<]+)</TD>";        string p2 = @regexStr2;
            Regex reg2 = new Regex(p2);        Match m2 = reg2.Match(s2);
            rS2[0] = m2.Groups["sex"].Value;
            Response.Write(rS2[0]);
        }
      

  8.   

    to wangdetian168(Convert王德田as★★★★★★): 是的
      

  9.   

    其中s2是整个页面的html代码。public void GetData(string buffer)
        {
                    String[] rS2 = new String[1];
            string s2 = buffer;
            string regexStr2 = @"<TR>\s*<TD>性 别: </TD>\s*<TD>(?<sex>[^<]+)</TD>";        string p2 = @regexStr2;
            Regex reg2 = new Regex(p2);        Match m2 = reg2.Match(s2);
            rS2[0] = m2.Groups["sex"].Value;
            Response.Write(rS2[0]);
        }
      

  10.   

    string re2 = "<span class=\"wz5\"><br>(.*)</span>[ \f\n\r\t\v](.+)<br>[ \f\n\r\t\v](.+)<img src=\"(.+)\">&nbsp;";
        Match match2 = Regex.Match(content, re2,RegexOptions.Singleline);
       con2 = match2.Result("$1");
      Response.Write("联系人:" + con2 + "<br/>");
    看看这个对你有用吗
      

  11.   

    string regexStr2 = @"[\s\S]*<TR>[^<]*<TD>性 别: </TD>[^<]*<TD>(?<sex>[^<]+)</TD>[\s\S]*";
      

  12.   

    不好意思,刚才有事,你这样试下Match m2 = reg2.Match(s2, RegexOptions.IgnoreCase);如果还不行,断点跟踪一下,贴下s2的内容
      

  13.   

    还可以利用dom获取结点值,或者使用字符串定位