Я рекомендую использовать JSOUP
анализатор для извлечения данных из HTML
кода
1.) Parse данных в Document
используя Jsoup.parse(string)
функции.
2.) Получите данные body
тега как Element
.
3.) Извлеките текст тега Element
, используя element.text()
.
4.) При необходимости вы можете использовать replaceAll("\\s*[,.]\\s*","")
, чтобы удалить все поля для заметок и чисел и форматирования.
String stringText = "<html><head></head><body><p>Aa , aa.</p><p><b>Aa aa, aa.</b></p><p>Aa aa aa, aa.</p><p><i>Aa, aa.</i></p><p><b><i>B, b, b.</i></b></p><b>Aa aa, aa.</b></body></html>";
Document document =Jsoup.parse(stringText);
Element element=document.body();
String plain_String = element.text().replaceAll("\\s*[,.]\\s*"," ");
System.out.println(element.text()); // Actual text
System.out.println(plain_String); // Formatted text
Выходные:
Aa , aa. Aa aa, aa. Aa aa aa, aa. Aa, aa. B, b, b.Aa aa, aa.
Aa aa Aa aa aa Aa aa aa aa Aa aa B b b Aa aa aa
Download Jsoup и добавить его в качестве зависимости
\\s*[,.]\\s*
: \\s*
матч ноль или более пробелов
[,.]
: соответствует любому символу, упомянутый в []
означают ,.
Если вы настаиваете regex
раствор затем использовать
1.) Сначала удалите все ненужные символы, такие как ,.
и пробелы с replaceAll("\\s*[.,]\\s*", " ")
2.) Используйте регулярное выражение <p[<>ib]*>([\\w\\s]+)<\\/[\\w]>
с Pattern
и Matcher
найти текст между тегами
3.) Append найденный текст в StringBuilder
и отображения результата
Код
String str = "<html><head></head><body><p>Aa , aa.</p><p><b>Aa aa, aa.</b></p><p>Aa aa aa, aa.</p><p><i>Aa, aa.</i></p><p><b><i>B, b, b.</i></b></p><b>Aa aa, aa.</b></body></html>";
Pattern pattern = Pattern.compile("<p[<>ib]*>([\\w\\s]+)<\\/[\\w]>");
Matcher matcher = pattern.matcher(str.replaceAll("\\s*[.,]\\s*", " "));
StringBuilder builder = new StringBuilder();
while (matcher.find()) {
builder.append(matcher.group(1));
}
System.out.println(builder);
Выход:
Aa aa Aa aa aa Aa aa aa aa Aa aa B b b
это 'Аа аа, аа. 'может быть между'
'и'
' –' Jsoup' также может выбрать все теги 'p', но опять же будет выпущено' Aa aa, aa. 'потому что не находится внутри' p', и где-то у вас также есть 'b' тег внутри' p' –