Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Matcher.results()

Возвращает все совпадения сразу в виде потока — короткая замена цикла с find().

Доступно с: Java 9

Синтаксис

public Stream<MatchResult> results()

Возвращаемое значение

Stream<MatchResult>Поток объектов MatchResult с методами group(), start(), end().

Примеры

Все хештеги текста в список:

void main() {
    String post = "Learning #java and #regex today #java";
    List<String> tags = Pattern.compile("#(\\w+)").matcher(post)
            .results()
            .map(r -> r.group(1))
            .distinct()
            .toList();
    IO.println(tags);
}

Результат:

[java, regex]

Примечания

Поток вычисляется лениво и использует состояние Matcher, поэтому его нельзя перебрать дважды. Для подсчёта совпадений удобно results().count().

См. также

  • Matcher.find() — Ищет следующее совпадение шаблона в любом месте строки.
  • Matcher.group() — Возвращает текст найденного совпадения или его группы в скобках.
  • Pattern.matcher() — Создаёт объект Matcher, который ищет совпадения шаблона в конкретной строке.

В учебнике

  • Регулярные выражения — Регулярные выражения в Java: matches, replaceAll, split по шаблону, классы Pattern и Matcher, группы и экранирование обратной косой черты.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.