Spec-Zone.ru › OpenJDK 24

Класс 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()
Возвращает, содержит ли 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)
Устанавливает прозрачность границ области для этого корректирующего средства.

Методы, объявленные в классе java.lang.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)
Изменяет шаблон, используемый этим объектом соответствия, для поиска совпадений.

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

Параметры:
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 - Если в шаблоне нет захватывающей группы с указанным индексом

группа

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 меньше нуля или если 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().

Строка замены может содержать ссылки на подпоследовательности, захваченные во время предыдущего совпадения: каждое вхождение ${имя} или $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());
Parameters:
sb - Целевой строковый билдер
replacement - Строка замены
Returns:
Этот матчер
Throws:
IllegalStateException - Если совпадение еще не было предпринято или если предыдущая операция совпадения завершилась неудачей
IllegalArgumentException - Если строка замены ссылается на именованную группу захвата, которая не существует в шаблоне
IndexOutOfBoundsException - Если строка замены ссылается на группу захвата, которая не существует в шаблоне
Since:
9

appendTail

public StringBuffer appendTail(StringBuffer sb)
Реализует терминальную операцию добавления и замены.

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

Parameters:
sb - Целевой буфер строк
Returns:
Целевой буфер строк

appendTail

public StringBuilder appendTail(StringBuilder sb)
Реализует терминальную операцию добавления и замены.

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

Parameters:
sb - Целевой строковый билдер
Returns:
Целевой строковый билдер
Since:
9

replaceAll

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

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

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

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

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

Parameters:
replacement - Строка замены
Returns:
Строка, построенная путем замены каждой совпадающей подпоследовательности строкой замены, при необходимости заменяя захваченные подпоследовательности

replaceAll

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

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

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

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

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

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

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

Implementation Note:
Эта реализация применяет функцию замены к этому матчеру, который является экземпляром MatchResult.
Parameters:
replacer - Функция, которая должна быть применена к результату сопоставления этого матчера, возвращающая строку замены.
Returns:
Строка, построенная путем замены каждой совпадающей подпоследовательности результатом применения функции замены к данной совпадающей подпоследовательности, при необходимости подставляя захваченные подпоследовательности.
Throws:
NullPointerException - если функция замены равна null
ConcurrentModificationException - если, по возможности, обнаружено, что функция замены изменила состояние этого матчера
Since:
9

results

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

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

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

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

Состояние этого матчера не должно изменяться во время выполнения потока, возвращаемого методом. Источник возвращаемого потока Spliterator является fail-fast и будет, при возможности, выбрасывать ConcurrentModificationException в случае обнаружения такого изменения.

Returns:
последовательный поток результатов сопоставления.
Since:
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 содержит информацию, которая может быть полезна для отладки. Точный формат не определен.

Overrides:
toString в классе Object
Возвращает:
Строковое представление этого сопоставителя
Since:
1.5

hitEnd

public boolean hitEnd()

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

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

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

requireEnd

public boolean requireEnd()

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

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

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

namedGroups

public Map<String,Integer> namedGroups()
Возвращает неизменяемую карту имен захватывающих групп и соответствующих им номеров групп. Если именованных групп нет, возвращает пустую карту.
Specified by:
namedGroups в интерфейсе MatchResult
Возвращает:
неизменяемую карту имен захватывающих групп и соответствующих им номеров групп
Since:
20

hasMatch

public boolean hasMatch()
Возвращает, содержит ли this действительное совпадение, полученное в результате предыдущей операции поиска или сопоставления.
Specified by:
hasMatch в интерфейсе MatchResult
Возвращает:
содержит ли this действительное совпадение
Since:
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/regex/Matcher.html

Spec-Zone.ru

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