Я бы рекомендовал избегать регулярных выражений для разбора HTML.Вы можете легко сделать то, что вы просите, используя Jsoup :
public static void main(String[] args) {
String html = "<html><head/><body><div class=\"main-content\">" +
"<div class=\"sub-content\">Sub content here</div>" +
"Main content here </div></body></html>";
Document document = Jsoup.parse(html);
Elements divs = document.select("div");
for (Element div : divs) {
System.out.println(div.ownText());
}
}
В ответ на комментарий: если вы хотите поместить содержимое элементов div
в массивиз String
s вы можете просто сделать:
String[] divsTexts = new String[divs.size()];
for (int i = 0; i < divs.size(); i++) {
divsTexts[i] = divs.get(i).ownText();
}
В ответ на комментарий: если у вас есть вложенные элементы и вы хотите получить собственный текст для каждого элемента, вы можете использовать синтаксис множественного выбора jquery,Вот пример:
public static void main(String[] args) {
String html = "<html><head/><body><div class=\"main-content\">" +
"<div class=\"sub-content\">" +
"<p>a paragraph <b>with some bold text</b></p>" +
"Sub content here</div>" +
"Main content here </div></body></html>";
Document document = Jsoup.parse(html);
Elements divs = document.select("div, p, b");
for (Element div : divs) {
System.out.println(div.ownText());
}
}
Приведенный выше код проанализирует следующий HTML-код:
<html>
<head />
<body>
<div class="main-content">
<div class="sub-content">
<p>a paragraph <b>with some bold text</b></p>
Sub content here</div>
Main content here</div>
</body>
</html>
и выведет следующий вывод:
Main content here
Sub content here
a paragraph
with some bold text