Класс 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 |
Выполняет промежуточный шаг добавления и замены. |
Matcher |
appendReplacement |
Выполняет промежуточный шаг добавления и замены. |
StringBuffer |
appendTail |
Выполняет заключительный шаг добавления и замены. |
StringBuilder |
appendTail |
Выполняет заключительный шаг добавления и замены. |
int |
end() |
Возвращает смещение после последнего совпавшего символа. |
int |
end |
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной группой во время предыдущей операции сопоставления. |
int |
end |
Возвращает смещение после последнего символа подпоследовательности, захваченной указанной именованной группой захвата во время предыдущей операции сопоставления. |
boolean |
find() |
Пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону. |
boolean |
find |
Сбрасывает этот сопоставитель, а затем пытается найти следующую подпоследовательность входной последовательности, соответствующую шаблону, начиная с указанного индекса. |
String |
group() |
Возвращает входную подпоследовательность, совпавшую при предыдущем сопоставлении. |
String |
group |
Возвращает входную подпоследовательность, захваченную указанной группой во время предыдущей операции сопоставления. |
String |
group |
Возвращает входную подпоследовательность, захваченную указанной именованной группой захвата во время предыдущей операции сопоставления. |
int |
groupCount() |
Возвращает количество групп захвата в шаблоне этого сопоставителя. |
boolean |
hasAnchoringBounds() |
Проверяет, используются ли границы области в качестве якорей для этого сопоставителя. |
boolean |
hasMatch() |
Возвращает значение true, если this содержит допустимое совпадение, найденное при предыдущей операции сопоставления или поиска. |
boolean |
hasTransparentBounds() |
Проверяет прозрачность границ области для этого сопоставителя. |
boolean |
hitEnd() |
Возвращает значение true, если механизм поиска достиг конца входных данных во время последней операции сопоставления, выполненной этим сопоставителем. |
boolean |
lookingAt() |
Пытается сопоставить входную последовательность с шаблоном, начиная с начала области. |
boolean |
matches() |
Пытается сопоставить всю область с шаблоном. |
Map |
namedGroups() |
Возвращает неизменяемое отображение имён групп захвата на номера групп. |
Pattern |
pattern() |
Возвращает шаблон, интерпретируемый этим сопоставителем. |
static String |
quoteReplacement |
Возвращает строку замены String как литерал для указанного String. |
Matcher |
region |
Задаёт границы области этого сопоставителя. |
int |
regionEnd() |
Возвращает конечный индекс (не включая его) области этого сопоставителя. |
int |
regionStart() |
Возвращает начальный индекс области этого сопоставителя. |
String |
replaceAll |
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, указанной строкой замены. |
String |
replaceAll |
Заменяет каждую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения указанной функции замены к результату сопоставления этого сопоставителя для данной подпоследовательности. |
String |
replaceFirst |
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, указанной строкой замены. |
String |
replaceFirst |
Заменяет первую подпоследовательность входной последовательности, соответствующую шаблону, результатом применения указанной функции замены к результату сопоставления этого сопоставителя для данной подпоследовательности. |
boolean |
requireEnd() |
Возвращает значение true, если дополнительные входные данные могут изменить положительный результат сопоставления на отрицательный. |
Matcher |
reset() |
Сбрасывает этот сопоставитель. |
Matcher |
reset |
Сбрасывает этот сопоставитель, задавая новую входную последовательность. |
Stream |
results() |
Возвращает поток результатов сопоставления для каждой подпоследовательности входной последовательности, соответствующей шаблону. |
int |
start() |
Возвращает начальный индекс предыдущего совпадения. |
int |
start |
Возвращает начальный индекс подпоследовательности, захваченной указанной группой во время предыдущей операции сопоставления. |
int |
start |
Возвращает начальный индекс подпоследовательности, захваченной указанной именованной группой захвата во время предыдущей операции сопоставления. |
MatchResult |
toMatchResult() |
Возвращает состояние сопоставления этого сопоставителя в виде MatchResult. |
String |
toString() |
Возвращает строковое представление этого сопоставителя. |
Matcher |
useAnchoringBounds |
Задаёт использование границ области в качестве якорей для этого сопоставителя. |
Matcher |
usePattern |
Изменяет Pattern, который этот Matcher использует для поиска совпадений. |
Matcher |
useTransparentBounds |
Задаёт прозрачность границ области для этого сопоставителя. |
Подробное описание методов
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)
Этот метод выполняет следующие действия:
Читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный строковый буфер. Чтение прекращается после последнего символа перед предыдущим совпадением, то есть символа с индексом
start()-1.Добавляет указанную строку замены в строковый буфер.
Устанавливает позицию добавления этого сопоставителя на индекс последнего совпавшего символа плюс один, то есть на
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)
Этот метод выполняет следующие действия:
Читает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный построитель строк. Чтение прекращается после последнего символа перед предыдущим совпадением, то есть символа с индексом
start()-1.Добавляет указанную строку замены в построитель строк.
Устанавливает позицию добавления этого сопоставителя на индекс последнего совпавшего символа плюс один, то есть на
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
public Matcher useTransparentBounds(boolean b)
Вызов этого метода с аргументом true задаёт использование прозрачных границ. Если логический аргумент равен false, будут использоваться непрозрачные границы.
При использовании прозрачных границ границы области данного объекта сопоставления прозрачны для конструкций просмотра вперёд, просмотра назад и проверки границ. Эти конструкции могут выходить за границы области, чтобы определить, допустимо ли соответствие.
При использовании непрозрачных границ границы области данного объекта сопоставления непрозрачны для конструкций просмотра вперёд, просмотра назад и проверки границ, которые могут пытаться выйти за их пределы. Эти конструкции не могут просматривать за границами, поэтому им не удастся найти соответствие за пределами области.
По умолчанию объект сопоставления использует непрозрачные границы.
- Параметры:
-
b— логическое значение, указывающее, следует ли использовать непрозрачные или прозрачные области - Возвращает:
- данный объект сопоставления
- Начиная с версии:
- 1.5
- См. также:
hasAnchoringBounds
public boolean hasAnchoringBounds()
Этот метод возвращает true, если данный объект сопоставления использует привязанные границы, и false в противном случае.
Описание привязанных границ см. в useAnchoringBounds.
По умолчанию объект сопоставления использует привязанные границы области.
- Возвращает:
-
true, если данный объект сопоставления использует привязанные границы, иначеfalse. - Начиная с версии:
- 1.5
- См. также:
useAnchoringBounds
public Matcher useAnchoringBounds(boolean b)
Вызов этого метода с аргументом true задаёт использование привязанных границ. Если логический аргумент равен false, будут использоваться непривязанные границы.
При использовании привязанных границ границы области данного объекта сопоставления соответствуют якорям, таким как ^ и $.
При использовании непривязанных границ границы области данного объекта сопоставления не соответствуют якорям, таким как ^ и $.
По умолчанию объект сопоставления использует привязанные границы области.
- Параметры:
-
b— логическое значение, указывающее, следует ли использовать привязанные границы. - Возвращает:
- данный объект сопоставления
- Начиная с версии:
- 1.5
- См. также:
toString
public String toString()
Возвращает строковое представление данного объекта сопоставления. Строковое представление объекта Matcher содержит информацию, которая может быть полезна при отладке. Точный формат не определён.
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
© 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