<TD vAlign=top class="td7">  <TABLE width="98%" border="1" cellpadding="2" cellspacing="0">
  <TR height="19">
    <TD height="19" width="72">品种&nbsp;</TD>
    <TD width="86">规格&nbsp;</TD>
    </TR>
</TABLE> </TD>Regex reLink = new Regex("<TD vAlign=top class=\"td7\">([\\s\\S]*?)</TD>");
怎么获得中间的这个TABLE。因为这个正则表达式。一匹配就会获得与其最近的</TD>.红色颜色标注。各位有没有办法呐。
谢谢各位高人了。顺便学习。呵呵。

解决方案 »

  1.   

    Regex reLink = new Regex(@"(?<=<TD vAlign=top class="td7">)(<TABLE[\s\S]*?</TABLE>) (?=</TD>"); 
      

  2.   

    有点问题,用环视,先匹配<table>,在看两边是不是class=td7的td~Regex reLink = new Regex(@"(?<=<TD vAlign=top class=\"td7\">)(<TABLE[\s\S]*?</TABLE>)(?=</TD>"); 
      

  3.   

    少了半个括号~
    Regex reLink = new Regex(@"(?<=<TD vAlign=top class=\"td7\">)(<TABLE[\s\S]*?</TABLE>)(?=</TD>)"); 
      

  4.   

    忘了说明一点<TD vAlign=top class="td7">这个中间有时候是表格,有时候是文图,有时候这中间这个table是大小字母,
    有时候table是大写字母,然后TD是小写,有时候会反过来 </TD> 这两天在弄信息抓取,标签的不规范抓信息真麻烦
      

  5.   

    那你要分是table和不是table这两种情况,因为不是table时,不会有这种问题~
      

  6.   

    (<TD vAlign=top class=\"td7\">(<TABLE[\\s\\S]*?</TABLE>)</TD>)|(<TD vAlign=top class=\"td7\">(((?!TABLE)[\\s\\S]))</TD>)
      

  7.   

    大小写的问题,你先全部都ToLower()就行啦~
      

  8.   

    (<TD vAlign=top class=\"td7\">(<TABLE[\\s\\S]*?</TABLE>)</TD>)|(<TD vAlign=top class=\"td7\">(((?!TABLE)[\\s\\S])*?)</TD>)