Spec-Zone.ru › OpenJDK 21

Класс Matcher

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

Объект Matcher создается из объекта Pattern, вызывая метод matcher этого объекта Pattern. После создания объект Matcher может использоваться для выполнения трех различных операций сопоставления:

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

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

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

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

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

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

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

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

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

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

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

С момента:
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)
Изменяет 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 если группа не совпала с частью входных данных или если область объекта совпадения объекта совпадения изменилась после успешного совпадения, но новое совпадение еще не было выполнено
Исключения:
IllegalStateException - Если совпадение еще не было выполнено или предыдущая операция совпадения завершилась неудачей
IndexOutOfBoundsException - Если в шаблоне нет группы захвата с заданным индексом

группа

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

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

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

groupCount

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

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

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

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

сопоставить

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

Если сопоставление успешно, то дополнительную информацию можно получить с помощью start, end, и group методов.

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

найти

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

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

Если сопоставление успешно, то дополнительную информацию можно получить с помощью start, end, и group методов.

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

найти

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

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

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

просматривать

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

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

Если сопоставление успешно, то дополнительную информацию можно получить с помощью start, end, и group методов.

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

цитатаЗамены

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

присоединитьЗамену

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 немедленно завершается и, при оптимальном поиске, сгенерирует исключение ConcurrentModificationException, если такое изменение обнаружено.

Returns:
последовательный поток результатов совпадений.
Since:
9

replaceFirst

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

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

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

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

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

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

replaceFirst

public String replaceFirst(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

region

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

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

Parameters:
start - Индекс, с которого начинается поиск (включительно)
end - Индекс, по которому завершается поиск (исключительно)
Returns:
этот сопоставитель
Throws:
IndexOutOfBoundsException - Если start или end меньше нуля, если start больше длины входной последовательности, если end больше длины входной последовательности или если start больше, чем end.
Since:
1.5

regionStart

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

regionEnd

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

hasTransparentBounds

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

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

См. useTransparentBounds для описания прозрачных и непрозрачных границ.

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

Returns:
true если этот сопоставитель использует прозрачные границы, false в противном случае.
Since:
1.5
See Also:
  • useTransparentBounds(boolean)

useTransparentBounds

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

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

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

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

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

Parameters:
b - булево значение, указывающее, использовать ли непрозрачные или прозрачные области
Returns:
этот сопоставитель
Since:
1.5
See Also:
  • hasTransparentBounds()

hasAnchoringBounds

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

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

См. useAnchoringBounds для описания привязанных границ.

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

Returns:
true если этот сопоставитель использует привязанные границы, false в противном случае.
Since:
1.5
See Also:
  • useAnchoringBounds(boolean)

useAnchoringBounds

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

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

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

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

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

Parameters:
b - булево значение, указывающее, использовать ли привязанные границы.
Returns:
этот сопоставитель
Since:
1.5
See Also:
  • hasAnchoringBounds()

toString

public String toString()

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

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

hitEnd

public boolean hitEnd()

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

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

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

requireEnd

public boolean requireEnd()

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

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

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

namedGroups

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

hasMatch

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

© 1993, 2023, 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/21/docs/api/java.base/java/util/regex/Matcher.html

Spec-Zone.ru

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