Как правило, вы должны , а не использовать регулярные выражения для анализа содержимого HTML / XML.Вместо этого используйте парсер как XPath.Учитывая, что вы, похоже, не можете использовать анализатор, мы можем попробовать следующую опцию с использованием сопоставителя шаблонов:
int count = 0;
String input = "<address>\n<addressLine>280 Flinders Mall</addressLine>\n <geoCodeGranularity>PROPERTY</geoCodeGranularity>\n</address>\n<address type=\"office\">\n <addressLine>IT Park</addressLine>\n <geoCodeGranularity>office Space</geoCodeGranularity>\n</address>";
String pattern = "<address[^>]*>(.*?)</address>";
Pattern r = Pattern.compile(pattern, Pattern.DOTALL);
Matcher m = r.matcher(input);
while (m.find( )) {
count += m.group(1).length();
System.out.println("Found value: " + m.group(1) );
}
System.out.println("count = " + count);
Это находит счет 198 для двух тегов <address>
в ваших данных образца.
Чтобы это работало с BufferedReader
, вам может потребоваться, чтобы вы читали по одному полному тегу <address>
за раз.