String t="<td align=\"center\">drgr gre</td><td align=\"center\">tdfgfd</td>";
   Pattern pa=Pattern.compile("(?<=<td (align=\"center\")?>).*(?!</td>)");
   Matcher m=pa.matcher(t);
   while(m.find()){
System.out.println(m.group());
   }
目的就是要取出td中的值 我要匹配</td>但是不捕获!是这样写吗?把.*改成其他的就可以 比如\\w* 但是这样就不全了!为什么呢!还请指教 

解决方案 »

  1.   

    这还跟贪婪模式和非贪婪模式有关系~~.* 改成 .*? 试试详细文章可以到这里看看http://blog.csdn.net/gavin_luo/archive/2008/10/27/3158628.aspx
      

  2.   

    需要用非贪婪那是肯定的; 
    试试这个:   String t="<td align=\"center\">drgr gre</td><td align=\"center\">tdfgfd</td>";
    Pattern pa=Pattern.compile("(?<=<td (align=\"center\")?>).*?(?=</td>)"); 
    Matcher m=pa.matcher(t); 
    while(m.find()){ 
    System.out.println(m.group()); 
    }
      

  3.   

    (?<=(<td align=\\"center\\">)).+?(?=</td>)