网页上有三个table
<table>
<tr>
<td></td>
<td></td>
</tr>
</table>
<table>
<tr>
<td></td>
<td></td>
</tr>
</table>
<table>
<tr>
<td></td>
<td></td>
</tr>
</table>
请问我如何写正则表达式可以分别得到这三个table呢Pattern p=Pattern.compile("正则表达式");
Mather m=p.mather("那三个表格");
while(m.find())
{
    System.out.println(m.group()); //分别输出每个表格
}谢谢了,就这么点儿实现,请老鸟指教

解决方案 »

  1.   

    这三个table一模一样啊!不明白楼主的意思!
      

  2.   

    是要输出每个table之间的这个么?<tr> 
    <td> </td> 
    <td> </td> 
    </tr> 
      

  3.   

    Pattern p = Pattern.compile("(?s)<table[^>]*>.+?</table>");
      

  4.   

    Pattern pp=Pattern.compile("</table>");//"<table>"
               Matcher op=pp.matcher(a);
               while(op.find()){
              System.out.println(op.group());
     这个样子么
      

  5.   

    Mather m=p.mather("那三个表格");// 看上去更简单的
        String s = "<table>\n<tr>\n<td> </td>\n<td> </td>\n</tr>\n</table>\n<table>\n<tr>\n<td> </td>\n<td> </td>\n</tr>\n</table>\n<table>\n<tr>\n<td> </td>\n<td> </td>\n</tr>\n</table>";
        Pattern p = Pattern.compile("(?s)<table.*?>.*?</table>");
        Matcher m = p.matcher(s);
        while (m.find()) {
          System.out.println("===="+m.group()); // 分别输出每个表格
        }
      

  6.   

    看到你的留言了,你对的要求我上面的表达式足够了. StringBuilder sb = new StringBuilder();
    String line;
    BufferedReader br = new BufferedReader(new FileReader("e:/a.txt"));
    while((line = br.readLine()) != null)
    sb.append(line).append("\r\n");
    br.close();
    Pattern p = Pattern.compile("<table>([\\s\\S]+?)</table>",Pattern.MULTILINE);
    Matcher m = p.matcher(sb.toString());
    while(m.find()){
    System.out.println(m.group());
    System.out.println("---------------------");
    }a.txt是你内容的COPY.结果是:完全正确
    <table> 
    <tr> 
    <td> </td> 
    <td> </td> 
    </tr> 
    </table>
    ---------------------
    <table> 
    <tr> 
    <td> </td> 
    <td> </td> 
    </tr> 
    </table>
    ---------------------
    <table> 
    <tr> 
    <td> </td> 
    <td> </td> 
    </tr> 
    </table>
    ---------------------