<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE><FONT class=p6 color=#3366cc>●</FONT></TD>
<TD vAlign=center width="75%" height=20><A class=a2 href="t20090911_402586300.htm" target=_blank>8月份国民经济主要指标数据</A></TD>
<TD class=a2 vAlign=center width="20%" height=20>2009年09月11日</TD></TR>
<TR>
<TD vAlign=top align=middle width="5%" height=25>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE><FONT class=p6 color=#3366cc>●</FONT></TD>
<TD vAlign=center width="75%" height=20><A class=a2 href="t20090910_402585842.htm" target=_blank>1-8月全国房地产市场运行情况</A></TD>
<TD class=a2 vAlign=center width="20%" height=20>2009年09月10日</TD></TR>
<TR>
<TD vAlign=top align=middle width="5%" height=25>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE><FONT class=p6 color=#3366cc>●</FONT></TD>
<TD vAlign=center width="75%" height=20><A class=a2 href="t20090901_402583588.htm" target=_blank>8月份全国制造业采购经理指数继续回升</A></TD>
<TD class=a2 vAlign=center width="20%" height=20>2009年09月01日</TD></TR>
<TR>
<TD vAlign=top align=middle width="5%" height=25>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE><FONT class=p6 color=#3366cc>●</FONT></TD>
<TD vAlign=center width="75%" height=20><A class=a2 href="t20090828_402582842.htm" target=_blank>1-7月份工业利润降幅继续缩小</A></TD>
<TD class=a2 vAlign=center width="20%" height=20>2009年08月28日</TD></TR>
<TR>
<TD vAlign=top align=middle width="5%" height=25>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD height=6></TD></TR></TBODY></TABLE><FONT class=p6 color=#3366cc>●</FONT></TD>
<TD vAlign=center width="75%" height=20><A class=a2 href="t20090811_402578483.htm" target=_blank>7月份国民经济主要指标数据</A></TD>
<TD class=a2 vAlign=center width="20%" height=20>2009年08月11日</TD></TR>
以上这段html中我需要匹配出“*月份国民经济主要指标数据”对应的链接,现在我写的表达式如下:
<td.*?href="(?<href>.*?(?="))".*?(?<title>\d{1,2}月份国民经济主要指标数据).*?/td>撇开上面我的写法,我的实际需求是:
找出页面中有的最大的月份对应的“国民经济主要指标数据”的链接如:
加入存在
10月份国民经济主要指标数据 和 9月份国民经济主要指标数据我只匹配到10月份的数据请问各位大虾:一个正则表达式能否实现,以及如何实现
或者有什么更好的方式?

解决方案 »

  1.   

    正则表达式我不是很会
    你可以使用HtmlAgilityPack来查找(这个网上游很多) HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
     htmlDoc.Load(url);//url是你要获取数据的网页路劲
     HtmlNodeCollection nodes = htmlDoc.DocumentNode.SelectNodes("//a");//这里获取所有的超链接,最后循环获取每个HtmlNode,HtmlNode.InnerText是获取去除标签后的内容,比较下时间久可以通过HtmlNode.Attributes["href"].Value来获取链接地址
      

  2.   

    你的题目信息不是很清楚,没有看到你的页面中有这个数据。
    不过如果只是查到link的话,比较简单。
    试试:
    <a\s*href\s*=\s*"([^"]+)"[^>]+>\s*\(d{1,2}月份国民经济主要指标数据)\s*</a>分了两组,Group[1]是link
    Group[2]是titile希望这个可以给你点帮助。
      

  3.   

    正则不能直接做非string类的操作,还是要逐个匹配判断的string url = string.Empty;
    int temp = 0;
    Regex reg = new Regex(@"(?is)<a(?:(?!href=).)*href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>\s*(?<mon>\d+)月份国民经济主要指标数据\s*</a>");
    reg.Replace(yourStr, delegate(Match m) { if (Convert.ToInt32(m.Groups["mon"].Value) > temp) { temp = Convert.ToInt32(m.Groups["mon"].Value); url = m.Groups["url"].Value; } return ""; });
    richTextBox2.Text = url;
      

  4.   

    正则不能直接做非string类的操作,还是要逐个匹配判断的string url = string.Empty;
    int temp = 0;
    Regex reg = new Regex(@"(?is)<a(?:(?!href=).)*href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>\s*(?<mon>\d+)月份国民经济主要指标数据\s*</a>");
    reg.Replace(yourStr, delegate(Match m) { if (Convert.ToInt32(m.Groups["mon"].Value) > temp) { temp = Convert.ToInt32(m.Groups["mon"].Value); url = m.Groups["url"].Value; } return ""; });
    richTextBox2.Text = url;