2009-09-08 168 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接口讓您詢問。