Как правило, вы не должны анализировать HTML ни с чем, кроме библиотеки синтаксического анализа HTML.Написание собственного синтаксического анализатора создает угрозу безопасности и подвергает ваши приложения возможным направлениям атак, таким как межсайтовый скриптинг и другие ошибки.Опять же: не разбирайте HTML с помощью регулярных выражений или простого токенизатора.Исключением из этого правила может быть, если у вас есть небольшой набор известных входных данных HTML, и вы будете использовать свой код только с этими данными .В этом сценарии вы можете и должны проверить, что ваш код работает правильно для каждого ввода.
Тем не менее, ваше исходное регулярное выражение очень близко.Подстановочный знак «точка» соответствует всему, кроме символов новой строки, поэтому, если мы добавим к вашему регулярному выражению возможность перевода строки в дополнение к символу «точка», мы получим положительные результаты для вашей тестовой строки.
String result = str.replaceAll("<(.|\r|\n|\f)*?>","");
НЕИСПОЛЬЗУЙТЕ ЭТОТ КОД НА НЕИЗВЕСТНОМ ВВОДЕ!НЕ ИСПОЛЬЗУЙТЕ ЕГО В ПРОИЗВОДСТВЕ!ЭТО НЕ БЕЗОПАСНЫЙ ИЛИ ПРАВИЛЬНЫЙ ПОДХОД К ПАРСИНГУ HTML.