Spec-Zone.ru › OpenJDK 25

Класс Matcher

java.lang.Object
java.util.regex.Matcher
Все реализованные интерфейсы:
MatchResult
public final class Matcher extends Object implements MatchResult
Механизм, выполняющий операции сопоставления с последовательностью символов путём интерпретации Pattern.

Сопоставитель создаётся на основе шаблона вызовом метода matcher этого шаблона. После создания сопоставитель можно использовать для выполнения трёх различных типов операций сопоставления:

  • Метод matches пытается сопоставить всю входную последовательность с шаблоном.

  • Метод lookingAt пытается сопоставить входную последовательность с шаблоном, начиная с её начала.

  • Метод find просматривает входную последовательность в поиске следующей подпоследовательности, соответствующей шаблону.

Каждый из этих методов возвращает логическое значение, указывающее на успех или неудачу. Дополнительные сведения об успешном сопоставлении можно получить, запросив состояние сопоставителя.

Сопоставитель ищет совпадения в части входных данных, называемой областью. По умолчанию область включает все входные данные сопоставителя. Область можно изменить с помощью метода region и запросить с помощью методов regionStart и regionEnd. Можно изменить способ взаимодействия границ области с некоторыми конструкциями шаблона. Дополнительные сведения см. в разделах useAnchoringBounds и useTransparentBounds.

В этом классе также определены методы замены найденных подпоследовательностей новыми строками, содержимое которых при необходимости можно вычислить на основе результата сопоставления. Методы appendReplacement и appendTail можно использовать совместно для сбора результата в существующий буфер или построитель строк. В качестве альтернативы можно использовать более удобный метод replaceAll, создающий строку, в которой заменяется каждая подпоследовательность входной последовательности, соответствующая шаблону.

Явное состояние сопоставителя включает начальный и конечный индексы последнего успешного совпадения. Оно также включает начальные и конечные индексы входной подпоследовательности, захваченной каждой группой захвата шаблона, а также общее количество таких подпоследовательностей. Для удобства предусмотрены методы, возвращающие эти захваченные подпоследовательности в виде строк.

Изначально явное состояние сопоставителя не определено; попытка запросить любую его часть до успешного сопоставления приведёт к выбросу исключения IllegalStateException. Явное состояние сопоставителя пересчитывается при каждой операции сопоставления.

Неявное состояние сопоставителя включает входную последовательность символов, а также позицию добавления, которая изначально равна нулю и обновляется методом appendReplacement.

Сопоставитель можно явно сбросить, вызвав метод reset(), или, если требуется новая входная последовательность, метод reset(CharSequence). При сбросе сопоставителя отбрасываются сведения о его явном состоянии, а позиция добавления устанавливается в ноль.

Экземпляры этого класса небезопасно использовать одновременно в нескольких потоках.

Начиная с версии:
1.4

Краткое описание методов

Модификатор и тип Метод Описание
Matcher appendReplacement(StringBuffer sb, String replacement)
Выполняет промежуточный шаг добавления и замены.
Matcher appendReplacement(StringBuilder sb, String replacement)
Выполняет промежуточный шаг добавления и замены.
StringBuffer appendTail(StringBuffer sb)
Выполняет заключительный шаг добавления и замены.
StringBuilder appendTail(StringBuilder sb)
Выполняет заключительный шаг добавления и замены.
int end()
Возвращает смещение после последнего совпавшего символа.
int end(int group)
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной группой во время предыдущей операции сопоставления.
int end(String name)
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной именованной группой захвата во время предыдущей операции сопоставления.
boolean find()
Пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону.
boolean find(int start)
Сбрасывает этот сопоставитель, а затем пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону, начиная с указанного индекса.
String group()
Возвращает входную подпоследовательность, совпавшую при предыдущем сопоставлении.
String group(int group)
Возвращает входную подпоследовательность, захваченную указанной группой во время предыдущей операции сопоставления.
String group(String name)
Возвращает входную подпоследовательность, захваченную указанной именованной группой захвата во время предыдущей операции сопоставления.
int groupCount()
Возвращает количество групп захвата в шаблоне этого сопоставителя.
boolean hasAnchoringBounds()
Проверяет, используются ли границы области в качестве якорей для этого сопоставителя.
boolean hasMatch()
Возвращает значение true, если this содержит допустимое совпадение, найденное при предыдущей операции сопоставления или поиска.
boolean hasTransparentBounds()
Проверяет прозрачность границ области для этого сопоставителя.
boolean hitEnd()
Возвращает значение true, если механизм поиска достиг конца входных данных во время последней операции сопоставления, выполненной этим сопоставителем.
boolean lookingAt()
Пытается сопоставить входную последовательность с шаблоном, начиная с начала области.
boolean matches()
Пытается сопоставить всю область с шаблоном.
Map<String,Integer> namedGroups()
Возвращает неизменяемое отображение имён групп захвата на номера групп.
Pattern pattern()
Возвращает шаблон, интерпретируемый этим сопоставителем.
static String quoteReplacement(String s)
Возвращает строку замены String как литерал для указанного String.
Matcher region(int start, int end)
Задаёт границы области этого сопоставителя.
int regionEnd()
Возвращает конечный индекс (не включая его) области этого сопоставителя.
int regionStart()
Возвращает начальный индекс области этого сопоставителя.
String replaceAll(String replacement)
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, указанной строкой замены.
String replaceAll(Function<MatchResult, String> replacer)
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения указанной функции замены к результату сопоставления этого сопоставителя для данной подпоследовательности.
String replaceFirst(String replacement)
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, указанной строкой замены.
String replaceFirst(Function<MatchResult, String> replacer)
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения указанной функции замены к результату сопоставления этого сопоставителя для данной подпоследовательности.
boolean requireEnd()
Возвращает значение true, если дополнительные входные данные могут изменить положительный результат сопоставления на отрицательный.
Matcher reset()
Сбрасывает этот сопоставитель.
Matcher reset(CharSequence input)
Сбрасывает этот сопоставитель, задавая новую входную последовательность.
Stream<MatchResult> results()
Возвращает поток результатов сопоставления для каждой подпоследовательности входной последовательности, соответствующей шаблону.
int start()
Возвращает начальный индекс предыдущего совпадения.
int start(int group)
Возвращает начальный индекс подпоследовательности, захваченной указанной группой во время предыдущей операции сопоставления.
int start(String name)
Возвращает начальный индекс подпоследовательности, захваченной указанной именованной группой захвата во время предыдущей операции сопоставления.
MatchResult toMatchResult()
Возвращает состояние сопоставления этого сопоставителя в виде MatchResult.
String toString()
Возвращает строковое представление этого сопоставителя.
Matcher useAnchoringBounds(boolean b)
Задаёт использование границ области в качестве якорей для этого сопоставителя.
Matcher usePattern(Pattern newPattern)
Изменяет Pattern, который этот Matcher использует для поиска совпадений.
Matcher useTransparentBounds(boolean b)
Задаёт прозрачность границ области для этого сопоставителя.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание методов

pattern

public Pattern pattern()
Возвращает шаблон, который интерпретируется этим сопоставителем.
Возвращает:
Шаблон, для которого был создан этот сопоставитель

toMatchResult

public MatchResult toMatchResult()
Возвращает состояние совпадения этого сопоставителя в виде MatchResult. Последующие операции, выполняемые над этим сопоставителем, не влияют на результат.
Возвращает:
MatchResult с состоянием этого сопоставителя
Начиная с:
1.5

usePattern

public Matcher usePattern(Pattern newPattern)
Изменяет Pattern, который этот Matcher использует для поиска совпадений.

Этот метод приводит к потере сопоставителем сведений о группах последнего найденного совпадения. Позиция сопоставителя во входных данных сохраняется, а его последняя позиция добавления не изменяется.

Параметры:
newPattern — Новый шаблон, используемый этим сопоставителем
Возвращает:
Этот сопоставитель
Вызывает исключение:
IllegalArgumentException — Если newPattern равен null
Начиная с:
1.5

reset

public Matcher reset()
Сбрасывает этот сопоставитель.

Сброс сопоставителя удаляет все его явные сведения о состоянии и устанавливает позицию добавления в ноль. Для сопоставителя задается область по умолчанию, то есть вся его последовательность символов. Привязка и прозрачность границ области этого сопоставителя не изменяются.

Возвращает:
Этот сопоставитель

reset

public Matcher reset(CharSequence input)
Сбрасывает этот сопоставитель и задает новую входную последовательность.

Сброс сопоставителя удаляет все его явные сведения о состоянии и устанавливает позицию добавления в ноль. Для сопоставителя задается область по умолчанию, то есть вся его последовательность символов. Привязка и прозрачность границ области этого сопоставителя не изменяются.

Параметры:
input — Новая входная последовательность символов
Возвращает:
Этот сопоставитель

start

public int start()
Возвращает начальный индекс предыдущего совпадения.
Определено в:
start в интерфейсе MatchResult
Возвращает:
Индекс первого совпавшего символа
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей

start

public int start(int group)
Возвращает начальный индекс подпоследовательности, захваченной указанной группой во время предыдущей операции поиска совпадения.

Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.start(0) эквивалентно m.start().

Определено в:
start в интерфейсе MatchResult
Параметры:
group — Индекс захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Индекс первого символа, захваченного группой, или -1, если совпадение было успешным, но сама группа ничего не совпоставила
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IndexOutOfBoundsException — Если в шаблоне нет захватывающей группы с указанным индексом

start

public int start(String name)
Возвращает начальный индекс подпоследовательности, захваченной указанной именованной захватывающей группой во время предыдущей операции поиска совпадения.
Определено в:
start в интерфейсе MatchResult
Параметры:
name — Имя именованной захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Индекс первого символа, захваченного группой, или -1, если совпадение было успешным, но сама группа ничего не совпоставила
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IllegalArgumentException — Если в шаблоне нет захватывающей группы с указанным именем
Начиная с:
1.8

end

public int end()
Возвращает смещение после последнего совпавшего символа.
Определено в:
end в интерфейсе MatchResult
Возвращает:
Смещение после последнего совпавшего символа
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей

end

public int end(int group)
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной группой во время предыдущей операции поиска совпадения.

Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.end(0) эквивалентно m.end().

Определено в:
end в интерфейсе MatchResult
Параметры:
group — Индекс захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Смещение после последнего символа, захваченного группой, или -1, если совпадение было успешным, но сама группа ничего не совпоставила
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IndexOutOfBoundsException — Если в шаблоне нет захватывающей группы с указанным индексом

end

public int end(String name)
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной именованной захватывающей группой во время предыдущей операции поиска совпадения.
Определено в:
end в интерфейсе MatchResult
Параметры:
name — Имя именованной захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Смещение после последнего символа, захваченного группой, или -1, если совпадение было успешным, но сама группа ничего не совпоставила
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IllegalArgumentException — Если в шаблоне нет захватывающей группы с указанным именем
Начиная с:
1.8

group

public String group()
Возвращает входную подпоследовательность, совпавшую при предыдущем поиске совпадения.

Для сопоставителя m с входной последовательностью s выражения m.group() и s.substring(m.start(), m. end()) эквивалентны.

Обратите внимание, что некоторые шаблоны, например a*, совпадают с пустой строкой. Этот метод возвращает пустую строку, если шаблон успешно совпадает с пустой строкой во входных данных.

Определено в:
group в интерфейсе MatchResult
Возвращает:
Подпоследовательность (возможно, пустую), совпавшую при предыдущем поиске, в виде строки или null, если у сопоставителя, для которого было найдено совпадение, изменился Pattern, но новый поиск совпадения еще не выполнялся
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей

group

public String group(int group)
Возвращает входную подпоследовательность, захваченную указанной группой во время предыдущей операции поиска совпадения.

Для сопоставителя m, входной последовательности s и индекса группы g выражения m.group(g) и s.substring(m.start(g ), m.end(g)) эквивалентны.

Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.group(0) эквивалентно m.group().

Если совпадение было успешным, но указанная группа не совпала ни с одной частью входной последовательности, возвращается null. Обратите внимание, что некоторые группы, например (a*), совпадают с пустой строкой. Этот метод возвращает пустую строку, если такая группа успешно совпадает с пустой строкой во входных данных.

Определено в:
group в интерфейсе MatchResult
Параметры:
group — Индекс захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Подпоследовательность (возможно, пустую), захваченную группой во время предыдущего поиска совпадения, или null, если группа не совпала с частью входных данных либо если после успешного совпадения изменился Pattern сопоставителя, но новый поиск совпадения еще не выполнялся
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IndexOutOfBoundsException — Если в шаблоне нет захватывающей группы с указанным индексом

group

public String group(String name)
Возвращает входную подпоследовательность, захваченную указанной именованной захватывающей группой во время предыдущей операции поиска совпадения.

Если совпадение было успешным, но указанная группа не совпала ни с одной частью входной последовательности, возвращается null. Обратите внимание, что некоторые группы, например (a*), совпадают с пустой строкой. Этот метод возвращает пустую строку, если такая группа успешно совпадает с пустой строкой во входных данных.

Определено в:
group в интерфейсе MatchResult
Параметры:
name — Имя именованной захватывающей группы в шаблоне этого сопоставителя
Возвращает:
Подпоследовательность (возможно, пустую), захваченную именованной группой во время предыдущего поиска совпадения, или null, если группа не совпала с частью входных данных
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IllegalArgumentException — Если в шаблоне нет захватывающей группы с указанным именем
Начиная с:
1.7

groupCount

public int groupCount()
Возвращает количество захватывающих групп в шаблоне этого сопоставителя.

По соглашению группа с номером ноль обозначает весь шаблон. Она не включается в это количество.

Любое неотрицательное целое число, меньшее или равное значению, возвращаемому этим методом, гарантированно является допустимым индексом группы для этого сопоставителя.

Определено в:
groupCount в интерфейсе MatchResult
Возвращает:
Количество захватывающих групп в шаблоне этого сопоставителя

matches

public boolean matches()
Пытается сопоставить шаблону всю область.

Если совпадение найдено, дополнительные сведения можно получить с помощью методов start, end и group.

Возвращает:
true тогда и только тогда, когда вся последовательность в области соответствует шаблону этого сопоставителя

find

public boolean find()
Пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону.

Этот метод начинает поиск с начала области этого сопоставителя или, если предыдущий вызов метода был успешным и сопоставитель с тех пор не сбрасывался, с первого символа, не вошедшего в предыдущее совпадение.

Если совпадение найдено, дополнительные сведения можно получить с помощью методов start, end и group.

Возвращает:
true тогда и только тогда, когда подпоследовательность входной последовательности соответствует шаблону этого сопоставителя

find

public boolean find(int start)
Сбрасывает этот сопоставитель, а затем пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону, начиная с указанного индекса.

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

Параметры:
start — индекс, с которого следует начать поиск совпадения
Возвращает:
true тогда и только тогда, когда подпоследовательность входной последовательности, начинающаяся с указанного индекса, соответствует шаблону этого сопоставителя
Вызывает исключение:
IndexOutOfBoundsException — Если start меньше нуля или больше длины входной последовательности.

lookingAt

public boolean lookingAt()
Пытается сопоставить шаблону входную последовательность, начиная с начала области.

Подобно методу matches, этот метод всегда начинает поиск с начала области; в отличие от него, он не требует совпадения со всей областью.

Если совпадение найдено, дополнительные сведения можно получить с помощью методов start, end и group.

Возвращает:
true тогда и только тогда, когда префикс входной последовательности соответствует шаблону этого сопоставителя

quoteReplacement

public static String quoteReplacement(String s)
Возвращает строку замены String, воспринимаемую как литерал, для указанной String. Этот метод создает String, который можно использовать как строку замены s, воспринимаемую как литерал, в методе appendReplacement класса Matcher. Созданный String будет соответствовать последовательности символов в s, рассматриваемой как литеральная последовательность. Обратная косая черта ('\') и знак доллара ('$') не будут иметь специального значения.
Параметры:
s — Строка, которую нужно преобразовать в литерал
Возвращает:
Литеральная строка замены
Начиная с:
1.5

appendReplacement

public Matcher appendReplacement(StringBuffer sb, String replacement)
Выполняет промежуточный шаг добавления и замены.

Этот метод выполняет следующие действия:

  1. Читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный строковый буфер. Чтение прекращается после последнего символа перед предыдущим совпадением, то есть символа с индексом start() - 1.

  2. Добавляет указанную строку замены в строковый буфер.

  3. Устанавливает позицию добавления этого сопоставителя на индекс последнего совпавшего символа плюс один, то есть на end().

Строка замены может содержать ссылки на подпоследовательности, захваченные во время предыдущего поиска совпадения: каждое вхождение ${name} или $g будет заменено результатом вычисления соответствующего метода group(name) или group(g). Для $g первая цифра после $ всегда считается частью ссылки на группу. Следующие цифры включаются в g, если они образуют допустимую ссылку на группу. В качестве возможных частей ссылки на группу рассматриваются только цифры от '0' до '9'. Например, если вторая группа совпала со строкой "foo", передача строки замены "$2bar" приведет к добавлению "foobar" в строковый буфер. Знак доллара ($) можно включить в строку замены как литерал, предварив его обратной косой чертой (\$).

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от результатов при использовании строки замены как литерала. Знаки доллара могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования литеральных символов в строке замены.

Этот метод предназначен для использования в цикле вместе с методами appendTail и find. Например, следующий код записывает one dog two dogs in the yard в стандартный поток вывода:

Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
Параметры:
sb — Целевой строковый буфер
replacement — Строка замены
Возвращает:
Этот сопоставитель
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IllegalArgumentException — Если строка замены ссылается на именованную захватывающую группу, отсутствующую в шаблоне
IndexOutOfBoundsException — Если строка замены ссылается на захватывающую группу, отсутствующую в шаблоне

appendReplacement

public Matcher appendReplacement(StringBuilder sb, String replacement)
Выполняет промежуточный шаг добавления и замены.

Этот метод выполняет следующие действия:

  1. Читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный построитель строк. Чтение прекращается после последнего символа перед предыдущим совпадением, то есть символа с индексом start() - 1.

  2. Добавляет указанную строку замены в построитель строк.

  3. Устанавливает позицию добавления этого сопоставителя на индекс последнего совпавшего символа плюс один, то есть на end().

Строка замены может содержать ссылки на подпоследовательности, захваченные во время предыдущего поиска совпадения: каждое вхождение $g будет заменено результатом вычисления group(g). Первая цифра после $ всегда считается частью ссылки на группу. Следующие цифры включаются в g, если они образуют допустимую ссылку на группу. В качестве возможных частей ссылки на группу рассматриваются только цифры от '0' до '9'. Например, если вторая группа совпала со строкой "foo", передача строки замены "$2bar" приведет к добавлению "foobar" в построитель строк. Знак доллара ($) можно включить в строку замены как литерал, предварив его обратной косой чертой (\$).

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от результатов при использовании строки замены как литерала. Знаки доллара могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования литеральных символов в строке замены.

Этот метод предназначен для использования в цикле вместе с методами appendTail и find. Например, следующий код записывает one dog two dogs in the yard в стандартный поток вывода:

Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuilder sb = new StringBuilder();
while (m.find()) {
    m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
Параметры:
sb — Целевой построитель строк
replacement — Строка замены
Возвращает:
Этот сопоставитель
Вызывает исключение:
IllegalStateException — Если поиск совпадения еще не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
IllegalArgumentException — Если строка замены ссылается на именованную захватывающую группу, отсутствующую в шаблоне
IndexOutOfBoundsException — Если строка замены ссылается на захватывающую группу, отсутствующую в шаблоне
Начиная с:
9

appendTail

public StringBuffer appendTail(StringBuffer sb)
Выполняет завершающий шаг добавления и замены.

Этот метод читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный строковый буфер. Он предназначен для вызова после одного или нескольких вызовов метода appendReplacement, чтобы скопировать остаток входной последовательности.

Параметры:
sb — Целевой строковый буфер
Возвращает:
Целевой строковый буфер

appendTail

public StringBuilder appendTail(StringBuilder sb)
Выполняет завершающий шаг добавления и замены.

Этот метод читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный построитель строк. Он предназначен для вызова после одного или нескольких вызовов метода appendReplacement, чтобы скопировать остаток входной последовательности.

Параметры:
sb — Целевой построитель строк
Возвращает:
Целевой построитель строк
Начиная с:
9

replaceAll

public String replaceAll(String replacement)
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, указанной строкой замены.

Этот метод сначала сбрасывает сопоставитель. Затем он просматривает входную последовательность в поисках совпадений с шаблоном. Символы, не входящие ни в одно совпадение, напрямую добавляются в результирующую строку; каждое совпадение заменяется в результате строкой замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от результатов при использовании строки замены как литерала. Знаки доллара могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования литеральных символов в строке замены.

Для регулярного выражения a*b, входных данных "aabfooaabfooabfoob" и строки замены "-" вызов этого метода для сопоставителя с таким выражением вернет строку "-foo-foo-foo-".

Вызов этого метода изменяет состояние сопоставителя. Если сопоставитель планируется использовать для дальнейших операций поиска совпадений, его сначала следует сбросить.

Параметры:
replacement — Строка замены
Возвращает:
Строка, полученная заменой каждой совпавшей подпоследовательности строкой замены с подстановкой захваченных подпоследовательностей при необходимости

replaceAll

public String replaceAll(Function<MatchResult, String> replacer)
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения указанной функции замены к результату совпадения этого сопоставителя для данной подпоследовательности. Исключения, выбрасываемые функцией, передаются вызывающему коду.

Этот метод сначала сбрасывает сопоставитель. Затем он просматривает входную последовательность в поисках совпадений с шаблоном. Символы, не входящие ни в одно совпадение, напрямую добавляются в результирующую строку; каждое совпадение заменяется результатом применения функции замены, возвращающей строку замены. Каждая строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от результатов при использовании строки замены как литерала. Знаки доллара могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования литеральных символов в строке замены.

Для регулярного выражения dog, входных данных "zzzdogzzzdogzzz" и функции mr -> mr.group().toUpperCase() вызов этого метода для сопоставителя с таким выражением вернет строку "zzzDOGzzzDOGzzz".

Вызов этого метода изменяет состояние сопоставителя. Если сопоставитель планируется использовать для дальнейших операций поиска совпадений, его сначала следует сбросить.

Функция замены не должна изменять состояние этого сопоставителя во время замены. При обнаружении такого изменения этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException.

Состояние каждого результата совпадения, передаваемого функции замены, гарантированно остается неизменным только во время вызова этой функции и только если функция замены не изменяет состояние сопоставителя.

Примечание по реализации:
Эта реализация применяет функцию замены к этому сопоставителю, являющемуся экземпляром MatchResult.
Параметры:
replacer — Функция, применяемая к результату совпадения этого сопоставителя и возвращающая строку замены.
Возвращает:
Строка, полученная заменой каждой совпавшей подпоследовательности результатом применения функции замены к этой подпоследовательности с подстановкой захваченных подпоследовательностей при необходимости.
Вызывает исключение:
NullPointerException — если функция замены равна null
ConcurrentModificationException — если при проверке с наилучшими усилиями обнаружено, что функция замены изменила состояние этого сопоставителя
Начиная с:
9

results

public Stream<MatchResult> results()
Возвращает поток результатов сопоставления для каждой подпоследовательности входной последовательности, соответствующей шаблону. Результаты сопоставления следуют в том же порядке, что и соответствующие подпоследовательности во входной последовательности.

Каждый результат сопоставления формируется так, как если бы был вызван метод toMatchResult().

Этот метод не сбрасывает данный объект сопоставления. Сопоставление начинается при запуске терминальной операции потока либо с начала области данного объекта сопоставления, либо, если объект сопоставления после этого не сбрасывался, с первого символа, которому не соответствовало предыдущее сопоставление.

Если после завершения терминальной операции потока объект сопоставления будет использоваться для дальнейших операций сопоставления, его следует сначала сбросить.

Во время выполнения конвейера возвращённого потока состояние данного объекта сопоставления не должно изменяться. Источник возвращённого потока Spliterator является быстро реагирующим на изменения и при обнаружении такого изменения в меру своих возможностей выбрасывает исключение ConcurrentModificationException.

Возвращает:
последовательный поток результатов сопоставления.
Начиная с версии:
9

replaceFirst

public String replaceFirst(String replacement)
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, заданной строкой замены.

Этот метод сначала сбрасывает данный объект сопоставления. Затем он просматривает входную последовательность в поисках соответствия шаблону. Символы, не входящие в соответствие, напрямую добавляются в результирующую строку; соответствие заменяется в результате строкой замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от тех, которые получились бы при трактовке этой строки как обычной строки замены. Знаки доллара могут трактоваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования обычных символов в строке замены.

Для регулярного выражения dog, входной последовательности "zzzdogzzzdogzzz" и строки замены "cat" вызов этого метода для объекта сопоставления с данным выражением вернёт строку "zzzcatzzzdogzzz".

Вызов этого метода изменяет состояние данного объекта сопоставления. Если объект сопоставления будет использоваться для дальнейших операций сопоставления, его следует сначала сбросить.

Параметры:
replacement — строка замены
Возвращает:
строку, полученную заменой первой соответствующей подпоследовательности строкой замены с подстановкой захваченных подпоследовательностей при необходимости

replaceFirst

public String replaceFirst(Function<MatchResult, String> replacer)
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения заданной функции замены к результату сопоставления данного объекта сопоставления, соответствующему этой подпоследовательности. Исключения, выброшенные функцией замены, передаются вызывающему коду.

Этот метод сначала сбрасывает данный объект сопоставления. Затем он просматривает входную последовательность в поисках соответствия шаблону. Символы, не входящие в соответствие, напрямую добавляются в результирующую строку; соответствие заменяется результатом применения функции замены, возвращающей строку замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.

Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от тех, которые получились бы при трактовке этой строки как обычной строки замены. Знаки доллара могут трактоваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования обычных символов в строке замены.

Для регулярного выражения dog, входной последовательности "zzzdogzzzdogzzz" и функции mr -> mr.group().toUpperCase() вызов этого метода для объекта сопоставления с данным выражением вернёт строку "zzzDOGzzzdogzzz".

Вызов этого метода изменяет состояние данного объекта сопоставления. Если объект сопоставления будет использоваться для дальнейших операций сопоставления, его следует сначала сбросить.

Во время замены функция замены не должна изменять состояние данного объекта сопоставления. При обнаружении такого изменения этот метод в меру своих возможностей выбрасывает исключение ConcurrentModificationException.

Состояние результата сопоставления, переданного функции замены, гарантированно остаётся постоянным только на время вызова функции замены и только если функция замены не изменяет состояние данного объекта сопоставления.

Примечание по реализации:
Данная реализация применяет функцию замены к данному объекту сопоставления, являющемуся экземпляром MatchResult.
Параметры:
replacer — функция, применяемая к результату сопоставления данного объекта сопоставления и возвращающая строку замены.
Возвращает:
строку, полученную заменой первой соответствующей подпоследовательности результатом применения функции замены к соответствующей подпоследовательности с подстановкой захваченных подпоследовательностей при необходимости.
Выбрасывает:
NullPointerException — если функция замены равна null
ConcurrentModificationException — если в меру своих возможностей обнаружено, что функция замены изменила состояние данного объекта сопоставления
Начиная с версии:
9

region

public Matcher region(int start, int end)
Задаёт границы области данного объекта сопоставления. Область — это часть входной последовательности, в которой выполняется поиск соответствия. Вызов этого метода сбрасывает объект сопоставления, а затем задаёт начало области по индексу, указанному параметром start, и конец области по индексу, указанному параметром end.

В зависимости от используемой прозрачности и привязки (см. useTransparentBounds и useAnchoringBounds) некоторые конструкции, например якоря, могут вести себя иначе на границах области или рядом с ними.

Параметры:
start — индекс начала поиска (включительно)
end — индекс окончания поиска (не включительно)
Возвращает:
данный объект сопоставления
Выбрасывает:
IndexOutOfBoundsException — если значение start или end меньше нуля, если start больше длины входной последовательности, если end больше длины входной последовательности или если start больше end.
Начиная с версии:
1.5

regionStart

public int regionStart()
Возвращает начальный индекс области данного объекта сопоставления. Поиск, выполняемый этим объектом сопоставления, ограничен нахождением соответствий в пределах от regionStart (включительно) до regionEnd (не включительно).
Возвращает:
начало области данного объекта сопоставления
Начиная с версии:
1.5

regionEnd

public int regionEnd()
Возвращает конечный индекс (не включительно) области данного объекта сопоставления. Поиск, выполняемый этим объектом сопоставления, ограничен нахождением соответствий в пределах от regionStart (включительно) до regionEnd (не включительно).
Возвращает:
конец области данного объекта сопоставления
Начиная с версии:
1.5

hasTransparentBounds

public boolean hasTransparentBounds()
Проверяет прозрачность границ области данного объекта сопоставления.

Этот метод возвращает true, если данный объект сопоставления использует прозрачные границы, и false, если он использует непрозрачные границы.

Описание прозрачных и непрозрачных границ см. в useTransparentBounds.

По умолчанию объект сопоставления использует непрозрачные границы области.

Возвращает:
true, если данный объект сопоставления использует прозрачные границы, иначе false.
Начиная с версии:
1.5
См. также:
  • useTransparentBounds(boolean)

useTransparentBounds

public Matcher useTransparentBounds(boolean b)
Задаёт прозрачность границ области данного объекта сопоставления.

Вызов этого метода с аргументом true задаёт использование прозрачных границ. Если логический аргумент равен false, будут использоваться непрозрачные границы.

При использовании прозрачных границ границы области данного объекта сопоставления прозрачны для конструкций просмотра вперёд, просмотра назад и проверки границ. Эти конструкции могут выходить за границы области, чтобы определить, допустимо ли соответствие.

При использовании непрозрачных границ границы области данного объекта сопоставления непрозрачны для конструкций просмотра вперёд, просмотра назад и проверки границ, которые могут пытаться выйти за их пределы. Эти конструкции не могут просматривать за границами, поэтому им не удастся найти соответствие за пределами области.

По умолчанию объект сопоставления использует непрозрачные границы.

Параметры:
b — логическое значение, указывающее, следует ли использовать непрозрачные или прозрачные области
Возвращает:
данный объект сопоставления
Начиная с версии:
1.5
См. также:
  • hasTransparentBounds()

hasAnchoringBounds

public boolean hasAnchoringBounds()
Проверяет привязку границ области данного объекта сопоставления.

Этот метод возвращает true, если данный объект сопоставления использует привязанные границы, и false в противном случае.

Описание привязанных границ см. в useAnchoringBounds.

По умолчанию объект сопоставления использует привязанные границы области.

Возвращает:
true, если данный объект сопоставления использует привязанные границы, иначе false.
Начиная с версии:
1.5
См. также:
  • useAnchoringBounds(boolean)

useAnchoringBounds

public Matcher useAnchoringBounds(boolean b)
Задаёт привязку границ области данного объекта сопоставления.

Вызов этого метода с аргументом true задаёт использование привязанных границ. Если логический аргумент равен false, будут использоваться непривязанные границы.

При использовании привязанных границ границы области данного объекта сопоставления соответствуют якорям, таким как ^ и $.

При использовании непривязанных границ границы области данного объекта сопоставления не соответствуют якорям, таким как ^ и $.

По умолчанию объект сопоставления использует привязанные границы области.

Параметры:
b — логическое значение, указывающее, следует ли использовать привязанные границы.
Возвращает:
данный объект сопоставления
Начиная с версии:
1.5
См. также:
  • hasAnchoringBounds()

toString

public String toString()

Возвращает строковое представление данного объекта сопоставления. Строковое представление объекта Matcher содержит информацию, которая может быть полезна при отладке. Точный формат не определён.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление данного объекта сопоставления
Начиная с версии:
1.5

hitEnd

public boolean hitEnd()

Возвращает true, если при последней операции сопоставления, выполненной этим объектом сопоставления, поисковый механизм достиг конца входных данных.

Если этот метод возвращает true, дополнительные входные данные могли бы изменить результат последнего поиска.

Возвращает:
true, если при последнем сопоставлении был достигнут конец входных данных; иначе false
Начиная с версии:
1.5

requireEnd

public boolean requireEnd()

Возвращает true, если дополнительные входные данные могут изменить положительное соответствие на отрицательное.

Если этот метод возвращает true и соответствие найдено, дополнительные входные данные могут привести к потере соответствия. Если этот метод возвращает false и соответствие найдено, дополнительные входные данные могут изменить соответствие, но оно не будет потеряно. Если соответствие не найдено, значение requireEnd не имеет смысла.

Возвращает:
true, если дополнительные входные данные могут изменить положительное соответствие на отрицательное.
Начиная с версии:
1.5

namedGroups

public Map<String,Integer> namedGroups()
Возвращает неизменяемое отображение имён захватывающих групп на номера групп. Если именованных групп нет, возвращает пустое отображение.
Определено в:
namedGroups в интерфейсе MatchResult
Возвращает:
неизменяемое отображение имён захватывающих групп на номера групп
Начиная с версии:
20

hasMatch

public boolean hasMatch()
Возвращает, содержит ли this допустимое соответствие, полученное в результате предыдущей операции сопоставления или поиска.
Определено в:
hasMatch в интерфейсе MatchResult
Возвращает:
содержит ли this допустимое соответствие
Начиная с версии:
20

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/regex/Matcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API