Показать сообщение отдельно
Непрочитано 24.03.2015, 14:29   #3
Аватар для Dementor
Герой

Автор темы (Топик Стартер) Re: Как вернуть в переменную найденое вхождение по регулярке?

Цитата:
Сообщение от shegan Посмотреть сообщение
Код:
String html = "zzz%a%qqq%b%xxx";

Pattern p = Pattern.compile("%([^%]+)%");
Matcher m = p.matcher(html);

while(m.find()) {
    String find = m.group(0);
    html = html.replaceAll(find, "copyright.html");
    p = Pattern.compile("%([^%]+)%");
    m = p.matcher(html);
}
Стоит отметить, что это странный подход.
Ведь в таком случае %a%, %b% заменятся на copyright.html.
Почему бы не реплейсить %copyright% на copyright.html?

c find() и group() уже нашел))) разобрался, но все-ранво спасибо! В том то и дело, я меняю по первому вхождению все, или что-то неправильно?(( Я же не поставил регулярку сразу перед replaceAll(). Он сначала находит, а потом меняет по готовой строке все в Html, далее опять находит и меняеет (по while), до тех пор пока не закончится поиск

Добавлено через 5 минут
Все работает как надо!

Pattern p = Pattern.compile("%([^%]+)%");
Matcher m = p.matcher(html);
 
while( m.find() )
{
	String find = m.group(0);
	String find_1 = m.group(1);
	html = html.replaceAll(find, find_1 + ".html!");
 
	p = Pattern.compile("%([^%]+)%");
	m = p.matcher(html);
}
Code: Java

Последний раз редактировалось Dementor; 24.03.2015 в 14:36. Причина: Добавлено сообщение
Dementor вне форума Ответить с цитированием