2009-09-08 135 views
0

我想解析HTML文档,并提取可重复一定的div块HTML一定格。提取使用Java +正则表达式

我已经成功地提取该块的第一次出现,但我不能弄清楚如何获得下一个。

这是我到目前为止的代码:

  String inputStr = HTTPGetter.get("http://someurl"); 
     String patternStr ="<div class=\"MY-CLASS\">(.*?)</div>"; 
     // Compile and use regular expression 

     Pattern pattern = Pattern.compile(patternStr); 
     Matcher matcher = pattern.matcher(inputStr); 
     boolean matchFound = matcher.find(); 

     if (matchFound) { 
      // Get all groups for this match 
      for (int i=0; i<=matcher.groupCount(); i++) { 
       String groupStr = matcher.group(i); 
      System.out.println("Group found:\n"+groupStr); 
      } 
     } else { 
      System.out.println("Not found"); 
     } 

我解析该文件有类MY-CLASS的多于一个的div块。我想要所有这些。

我该怎么做?

回答

4

while循环只需使用find()

while (matcher.find()) { 
    System.out.println("Group found:\n"+matcher.group(1)); 
} 

这是比赛你需要遍历,而不是捕捉组。

1

我会强烈建议不要使用正则表达式为所有,但最简单的情况下,因为HTML是不正规并且有许多优势情况下绊倒你的表情(看到无数的答案各处)。

看看JTidy,这将解析HTML并呈现DOM接口让您询问。