Особенности работы класса Matcher (2/3)
Регулярные выражения используются для двух задач: поиска и замены. Поговорим о поиске.
Метод matches проверяет, удовлетворяет ли выражению весь регион, lookingAt – хотя бы его начало. Метод find похож на next итератора – он последовательно идет по строке, и находит следующие совпадения с выражением. Эту итерацию можно сдвинуть на определенную позицию строки, передав позицию как параметр.
Matcher реализует интерфейс MatchResult. Через него предоставляется информация о последнем успешном поиске (любым из перечисленных методов). Если эту информацию необходимо сохранить, toMatchResult() выделит её в отдельный иммутабельный объект. А если хочется обработать последовательность всех совпадений в виде стрима, поможет метод results().
Интерфейс MatchReslut предоставляет методы group, start и end. Они дают содержимое найденной подстроки и ее позицию в строке. Если этим методам параметром передать номер или имя группы, то результатом будет информация не о всей подстроке, а о ее группах. Общее количество групп хранится в свойстве groupCount.
Есть еще пара свойств последнего поиска, которые актуальны не только для успешного результата, поэтому не вошли в интерфейс: hitEnd и requireEnd. hitEnd сообщает, пришлось ли при последнем поиске дойти до конца региона. requireEnd подскажет, мог ли измениться результат (успех/неудача) последнего поиска, если бы в конец региона был добавлен хвост.
Метод reset сбрасывает всё это текущее состояние поиска. Передав в него параметр, можно заодно заменить строку, с которой работаем. Используемое регулярное выражение тоже можно заменить, методом usePattern, но состояние поиска при этом не сбросится.
#Строки
Регулярные выражения используются для двух задач: поиска и замены. Поговорим о поиске.
Метод matches проверяет, удовлетворяет ли выражению весь регион, lookingAt – хотя бы его начало. Метод find похож на next итератора – он последовательно идет по строке, и находит следующие совпадения с выражением. Эту итерацию можно сдвинуть на определенную позицию строки, передав позицию как параметр.
Matcher реализует интерфейс MatchResult. Через него предоставляется информация о последнем успешном поиске (любым из перечисленных методов). Если эту информацию необходимо сохранить, toMatchResult() выделит её в отдельный иммутабельный объект. А если хочется обработать последовательность всех совпадений в виде стрима, поможет метод results().
Интерфейс MatchReslut предоставляет методы group, start и end. Они дают содержимое найденной подстроки и ее позицию в строке. Если этим методам параметром передать номер или имя группы, то результатом будет информация не о всей подстроке, а о ее группах. Общее количество групп хранится в свойстве groupCount.
Есть еще пара свойств последнего поиска, которые актуальны не только для успешного результата, поэтому не вошли в интерфейс: hitEnd и requireEnd. hitEnd сообщает, пришлось ли при последнем поиске дойти до конца региона. requireEnd подскажет, мог ли измениться результат (успех/неудача) последнего поиска, если бы в конец региона был добавлен хвост.
Метод reset сбрасывает всё это текущее состояние поиска. Передав в него параметр, можно заодно заменить строку, с которой работаем. Используемое регулярное выражение тоже можно заменить, методом usePattern, но состояние поиска при этом не сбросится.
#Строки