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, группы и экранирование обратной косой черты.