如下是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>
<!---注注注注--->
<!---注注注注--->
<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>
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";
}
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";
}
}
//一行的确效率不高,反复的环视检查,只是代码短
MatchCollection mc = Regex.Matches(html,@"(?is)(?<=<div id=htmrs>((?!</div).)*?)<table[^>]*>.+?</table>");
foreach(Match m in mc)
{
m.Value;//table的内容
}
//这是我自已改进的
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();
}
Regex regTable = new Regex(@"(?is)<table[^>]*>.*?</table>");
Regex regDiv = new Regex(@"(?is)<div[^>]*?id=(['""]?)htmrs\1[^>]*>.*?</div>");
Regex regTable = new Regex(@"(?is)<table[^>]*>.*?</table>");
我正确的截取到了table内容再次感谢,div[^>]*?id=(['""]?)htmrs\1[^>]*>.*?</div>您的这双引号理处理我看了一头雾水,我会努力学好正则,另外感谢所有热心回答的朋友祝大家走桃花运发大财