Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного времени.

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

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 - Если начало или конец меньше нуля, начало больше длины входной последовательности, конец больше длины входной последовательности либо начало больше конца.
Начиная с версии:
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 задает использование прозрачных границ. Если аргумент типа boolean равен 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 задает использование привязывающих границ. Если аргумент типа boolean равен 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, 2026, 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.

Spec-Zone.ru

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