正则我不太会,推荐你用jsoup这个开源jar,这个是解析html利器,非常强大,查询语法和jquery语法很类似

解决方案 »

  1.   

    推荐使用html解析库,,,正则表达式不适合这种场合。。
      

  2.   

    public static void main(String[] args) {
    String s = "<h1>2014</h1><table><tr><td><strong>November</strong><a href=\"a.html\">a</a></td><td></td></tr></table><h1>2013</h1><table><tr><td><strong>October</strong><a href=\"b.html\">b</a></td><td><strong>September</strong><a href=\"c.html\">c</a></td></tr></table><h1>2012</h1><table><tr><td><strong>August</strong><a href=\"d.html\">d</a></td><td><strong>July</strong><a href=\"e.html\">e</a></td><td><strong>June</strong><a href=\"f.html\">f</a></td></tr></table>";
    Matcher m = Pattern.compile("<h1>(.*?)</h1><table>(.*?)</table>").matcher(s);

    while (m.find()) {
    Matcher subM = Pattern.compile("<strong>(.*?)</strong>.*?<a href=\"(.*?)\">.</a>").matcher(m.group(2));
    while (subM.find()) {
    System.out.println(m.group(1) + "  " + subM.group(1) + "   "+ subM.group(2));
    }
    }
    }
      

  3.   

    html格式的建议用jsoup要比正则精准,java的正则不支持平衡组的,不适合解析html这样的数据格式。你贴出来的只是部分,如果其它地方不会影响的话,可以用楼上的正则