如下是forms读取网站反回的整页一个很长的字符串,我想求个正则,载取id=htmrs内的所有table内容
<!---注注注注--->
<!---注注注注--->
<html><head>
<STYLE> 
#r TD.text
{
line-height: 1.5em;
font-size: 75%;
word-break: break-all;
}
#r TD.text SPAN
{
font-size: 1.16em;
}
 
</STYLE>
</head>
<body text="#000" topMargin="6" bottomMargin="0" bgColor="#ffffff">
<script src="js/jsrir.js?v=1.3"></script>
<script src="js/jsrtt.js?v=1.3"></script>
<div id="rrxx1"></div>
<div id="rrxxes"></div>
<form name="x1"><input type="text"></form>
<!---以上都不要,我想取如下的id= htmrs内的table 循环出来--->
<div id=htmrs>
<script type="text/javascript">// 请求query映射表 document.write('<script type="text/javascript" src=http://xxxx/query_map.js?' + Math.random() + '"><' + '/script>');</script><TABLE cellSpacing="0" cellPadding="2">
<TBODY>
<TR>
<TD class="text">
<A href="xxxxxx" target="_blank" mon="a=5&pn=1"><SPAN><B>《<FONT color="#c60a00">中国</FONT>日报》亚洲版在港创刊</B></SPAN></A> <FONT color="#6f6f6f"><NOBR>新华网 2010-12-12 08:56</NOBR></FONT><BR /><FONT size="-1">《<FONT color="#c60a00">中国</FONT>日报》亚洲版10日在香港创刊,并在印度尼西亚、泰国、新加坡、日本、马来西亚等国家和地区发行,主要面向亚洲各国政要、专家学者、商界领袖等高端读者。 《<FONT color="#c60a00">中国</FONT>日报》亚洲版不仅向亚洲读者提供有关<FONT color="#c60a00">中国</FONT>的资讯,而且从<FONT color="#c60a00">中国</FONT>视角进行亚洲热点问题报道、提供独家观点和分析评论,...</FONT> 
</TD>
</TR>
</TBODY>
</TABLE>
<br/><TABLE cellSpacing="0" cellPadding="2">
<TBODY>
<TR>
<TD class="text">
<A href="xxxx" target="_blank" mon="a=5&pn=1"><SPAN><B>《<FONT color="#c60a00">中国</FONT>日报》亚洲版在港创刊</B></SPAN></A> <FONT color="#6f6f6f"><NOBR>新华网 2010-12-12 08:56</NOBR></FONT><BR /><FONT size="-1">《<FONT color="#c60a00">中国</FONT>日报》亚洲版10日在香港创刊,并在印度尼西亚、泰国、新加坡、日本、马来西亚等国家和地区发行,主要面向亚洲各国政要、专家学者、商界领袖等高端读者。 《<FONT color="#c60a00">中国</FONT>日报》亚洲版不仅向亚洲读者提供有关<FONT color="#c60a00">中国</FONT>的资讯,而且从<FONT color="#c60a00">中国</FONT>视角进行亚洲热点问题报道、提供独家观点和分析评论,...</FONT> 
</TD>
</TR>
</TBODY>
</TABLE>
<br/></div></body></html>

解决方案 »

  1.   

    获取DIV内容
    Regex reg = new Regex(@"(?is)<div[^>]*>(?><div[^>]*>(?<o>)|</div>(?<-o>)|(?:(?!</?div\b).)*)*(?(o)(?!))</div>");
    MatchCollection mc = reg.Matches(yourStr);
    foreach(Match m in mc)
    {
       TextBox1.Text += m.Value + "\n";
    }
      

  2.   

    正则表达式知识,参考:http://book115.com/a/ruanjiangongcheng/2010/1128/38.html
      

  3.   

    一个正则倒是可以做到,不过还是两个正则好点            Regex regDiv = new Regex(@"(?is)<div id=htmrs>.*?</div>");
                Regex regTable = new Regex(@"(?is)<table[^>]*>.*?</table>");
                Match mDiv = regDiv.Match(yourStr);
                MatchCollection mcTable;
                if (mDiv.Success)
                {
                    mcTable = regTable.Matches(mDiv.Value);
                    foreach (Match m in mcTable)
                    {
                        richTextBox2.Text += m.Value + "\n=======================\n";
                    }
                }
      

  4.   

    #3楼感谢,!不过if (mDiv.Success)反回是false
      

  5.   


    //一行的确效率不高,反复的环视检查,只是代码短
    MatchCollection mc = Regex.Matches(html,@"(?is)(?<=<div id=htmrs>((?!</div).)*?)<table[^>]*>.+?</table>");
    foreach(Match m in mc)
    {
        m.Value;//table的内容
    }
      

  6.   

    <div id="htmrs" style="width: 640px; cssfloat: left;">
    //这是我自已改进的
      private void getxmlts(string html) {
                Regex regDiv = new Regex(@"(?is)<div id=""htmrs"" style=""width: 640px; cssfloat: left;"">([\w\W]+)</div>");
                Regex regTable = new Regex(@"(?is)<table cellSpacing=""0"" cellPadding=""2"">([\w\W]+)</table>");
                Match mDiv = regDiv.Match(html);
                MatchCollection mcTable;
                string htwrs = "";
                if (mDiv.Success)
                {
                    mcTable = regTable.Matches(mDiv.Value);
                    
                    foreach (Match m in mcTable)
                    {
                        htwrs += m.Value;
                        // this.label3.Text += m.Value + "\n=======================\n";
                    }
                    this.label3.Text = htwrs.ToString();
                }
                else {                this.label3.Text = html.ToString();
                }
      

  7.   

    不知道该说什么了Regex regDiv = new Regex(@"(?is)<div[^>]*?id=(['""]?)htmrs\1[^>]*>.*?</div>");
    Regex regTable = new Regex(@"(?is)<table[^>]*>.*?</table>");
      

  8.   

    非感谢lxcnn,用了您提供的
    Regex regDiv = new Regex(@"(?is)<div[^>]*?id=(['""]?)htmrs\1[^>]*>.*?</div>");
    Regex regTable = new Regex(@"(?is)<table[^>]*>.*?</table>");
    我正确的截取到了table内容再次感谢,div[^>]*?id=(['""]?)htmrs\1[^>]*>.*?</div>您的这双引号理处理我看了一头雾水,我会努力学好正则,另外感谢所有热心回答的朋友祝大家走桃花运发大财