Как сказано выше, регулярные выражения не подходят для анализа XML и HTML. Однако в некоторых случаях это пригодится, поэтому вот что должно работать:
Pattern p = Pattern.compile("<head>.*?<title>(.*?)</title>.*?</head>", Pattern.DOTALL);
Matcher m = p.matcher(content);
while (m.find()) {
title = m.group(1);
}
Если вы используете Matcher
, нет необходимости ставить .*
до и после (так как они не являются частью какой-либо группы). Вы также можете посмотреть на неохотный квалификатор (то есть *?
вместо *
, +?
вместо +
и т. Д.), Если это не так. Наконец, вы также должны использовать флаг Pattern.DOT_ALL
, иначе точка не соответствует символу конца строки