Encodera

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

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

Справочник Java

Matcher.find()

Ищет следующее совпадение шаблона в любом месте строки.

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

Синтаксис

public boolean find()

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

booleantrue, если совпадение найдено; тогда его можно получить через group().

Примеры

Все email-адреса в тексте с их позициями:

void main() {
    String text = "Write to anna@example.com or oleg@test.org";
    Matcher m = Pattern.compile("[\\w.]+@[\\w.]+\\.\\w+").matcher(text);
    while (m.find()) {
        IO.println(m.group() + " at " + m.start());
    }
}

Результат:

anna@example.com at 9
oleg@test.org at 29

Проверка «содержит ли строка цифру»:

void main() {
    Pattern digit = Pattern.compile("\\d");
    IO.println(digit.matcher("abc1").find());
    IO.println(digit.matcher("abc").find());
}

Результат:

true
false

Примечания

Каждый вызов find() продолжает поиск с места, где закончилось предыдущее совпадение, поэтому его вызывают в цикле while. Если нужно проверить всю строку целиком, используйте matches(). start() и end() возвращают границы совпадения.

См. также

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

Вопросы и ответы по теме

В учебнике

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

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

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