我想取网页中这些数据,但是不清楚怎么写正则。。希望哪个朋友可以帮忙看看。。代码有些长,主要是表中有表,我写的正则只能取到第一个</table>结束的内容。<table width="100%"  border="0" cellpadding="0" cellspacing="3" bgcolor="#4A9EE0">
<tr>
<td width="25%">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#F2E8D0"><td height="25" colspan="2" align="center" bgcolor="#F2E8D0" class="f14a1">可售期房统计</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right" width=65%> 可售房屋套数:</td>
<td align="center" width=35%>111313</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 可售房屋面积(M<sup>2</sup>):</td>
<td align="center">14416625</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="left"> &nbsp;&nbsp;其中&nbsp;&nbsp;&nbsp;&nbsp;住宅套数:</td>
<td align="center">57882</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">7387669</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 商业单元:</td>
<td align="center">12661</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">2802061</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 办公单元:</td>
<td align="center">24576</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">1633385</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 车位个数:</td>
<td align="center">13104</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">1916617</td></tr>
<tr bgcolor="#E3E2E2"><td height="20" colspan="2" align="center"><!--截止日期:2010-4-6--> <a href="/public/statistic/left.asp?show=1" style="color:#cc6600" target="_blank"><b>查看详细资料>>></b></a></td></tr>
</table>
</td>
<td width="25%">
<table width="100%"  border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#F2E8D0"><td height="25" colspan="2" align="center" bgcolor="#F2E8D0" class="f14a1"> 2010年3月预售许可</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right" width=65%> 批准预售许可证:</td>
<td align="center" width=35%>31</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 批准预售面积(M<sup>2</sup>):</td>
<td align="center">972328</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="left"> &nbsp;&nbsp;其中&nbsp;&nbsp;&nbsp;住宅套数:</td>
<td align="center">9612</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">898202</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 商业单元:</td>
<td align="center">43</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">23845</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 办公单元:</td>
<td align="center">0</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">0</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 车位个数:</td>
<td align="center">1063</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">36048</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" colspan="2">&nbsp;</td></tr>
</table>
</td>

<td width="25%">
<table width="100%"  border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#F2E8D0"><td height="25" colspan="2" align="center" class="f14a1">2010-4-6期房网上认购</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right" width=65%> 网上认购套数:</td>
<td align="center" width=35%>364</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 网上认购面积(M<sup>2</sup>):</td>
<td align="center">44205</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="left"> &nbsp;&nbsp;其中&nbsp;&nbsp;&nbsp;住宅套数: </td>
<td align="center">263</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">37869</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 商业单元: </td>
<td align="center">18</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">924</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 办公单元: </td>
<td align="center">76</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">5208</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 车位个数: </td>
<td align="center">7</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">205</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" colspan="2">&nbsp;</td></tr>
</table></td>

<td width="25%"><table width="100%"  border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#F2E8D0"><td height="25" colspan="2" align="center" bgcolor="#F2E8D0" class="f14a1">2010-4-6期房网上签约</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right" width=65%> 网上签约套数:</td>
<td align="center" width=35%>582</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 网上签约面积 (M<sup>2</sup>):</td>
<td align="center">54879</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="left"> &nbsp;其中&nbsp;&nbsp;&nbsp;&nbsp;住宅套数:</td>
<td align="center">400</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">44214</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 商业单元: </td>
<td align="center">44</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">2958</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 办公单元: </td>
<td align="center">133</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">7093</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 车位个数: </td>
<td align="center">2</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" bgcolor="#F9F4E8" align="right"> 面积(M<sup>2</sup>):</td>
<td align="center">113</td></tr>
<tr bgcolor="#F9F4E8"><td height="20" colspan="2" align=center><a href="#popup" style="color:#cc6600" target="_blank" id="popup_statistic_everyday_ys" name="popup_statistic_everyday_ys"><b>查看详细资料>>></b></a>
</td></tr>
</table></td></tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td width="100%" height="20" bgcolor="#4A9EE0" style="color:white"><b>&nbsp;&nbsp;说明:<!--1、-->销售单位包括套、单元、个、层等。</b></td></tr> </table>

</td><td width="8" bgcolor="#f9f4e8"></td></tr>
</table>

解决方案 »

  1.   

      实际结构很明了 就是
    <table>
    <tr>
    <td>
    <table><tr><td></td><td></td><td></td><td></td><td></td></tr></table>
    </td>
    <td>
    <table><tr><td></td><td></td><td></td><td></td><td></td></tr></table>
    </td>
    </tr>
    </table>
      

  2.   

    需要用到平衡组,看下哪个是你需要的吧Regex reg = new Regex(@"(?is)<table width=""100%"" border=""0"" cellpadding=""0"" cellspacing=""3"" bgcolor=""#4A9EE0"">(?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!))</table>");
    Match m = reg.Match(yourStr);
    if (m.Success)
    {
         richTextBox2.Text = m.Value;
    }
    //或者
    Regex reg = new Regex(@"(?is)<table[^>]*>(?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!))</table>");
    MatchCollection mc = reg.Matches(yourStr);
    foreach(Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n--------------------\n";
    }
      

  3.   

      to lxcnn...
         你好,我觉得你的代码我肯定可以用,但是我采用了你的方法后。。把获取的STR 经过Response.writr(str)出来后,是一个页面。。也就是说所有内容都拿出来了。。
    方法如下,希望你能指点迷津:
    public string GetPageTable()
            {
                string content = "";
                string pageUrl = "";
                byte[] pageData = null;
                pageUrl = string.Format("http://bjfdc.bjjs.gov.cn/public/Index.asp");            try
                {
                    using (WebClient wc = new WebClient())
                    {
                        pageData = wc.DownloadData(pageUrl);
                        content = Encoding.GetEncoding("GB2312").GetString(pageData);
                    }
                }
                catch (Exception ex)
                {
                    //throw ex;
                    return content;
                }            //取表格规格为的数据
                Regex reTable = new Regex(@"(?is)<table width=""100%"" border=""0"" cellpadding=""0"" cellspacing=""3"" bgcolor=""#4A9EE0"">(?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!))</table>");
                Match m = reTable.Match(content);
                if (m.Success)
                {
                    content = m.Value;
                }
                return content;
            }