Spec-Zone.ru › OpenJDK 17

Класс 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 hasTransparentBounds()
Запрашивает прозрачность границ области для этого матчера.
boolean hitEnd()
Возвращает true, если в последней операции сопоставления, выполненной этим матчером, движок поиска достиг конца входных данных.
boolean lookingAt()
Попытка сопоставить входную последовательность, начиная с начала области, с шаблоном.
boolean matches()
Попытка сопоставить всю область с шаблоном.
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)
Возвращает начальный индекс подпоследовательности, захваченной заданной именуемой захватывающей группой во время предыдущей операции совпадения.
Параметры:
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)
Возвращает смещение после последнего символа подпоследовательности, захваченной заданной именуемой захватывающей группой во время предыдущей операции совпадения.
Параметры:
name - Имя именуемой захватывающей группы в шаблоне этого соответствия
Возвращает:
Смещение после последнего символа, захваченного группой, или -1 если совпадение прошло успешно, но сама группа ничего не совпадала
Исключения:
IllegalStateException - Если совпадение еще не было произведено или операция предыдущего совпадения не удалась
IllegalArgumentException - Если в шаблоне нет захватывающей группы с заданным именем
С:
1.8

group

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

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

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

Определено в:
group в интерфейсе MatchResult
Возвращает:
Подпоследовательность (возможно, пустая), совпавшая с предыдущим совпадением, в виде строки
Исключения:
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 - Если в шаблоне нет захватывающей группы с заданным индексом

group

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

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

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

groupCount

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

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

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

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

matches

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

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

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

find

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

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

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

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

find

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

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

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

lookingAt

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

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

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

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

quoteReplacement

public static String quoteReplacement(String s)
Возвращает буквальный заменитель String для указанного String. Этот метод создаёт String, который будет работать как буквальный заменитель s в методе appendReplacement класса Matcher. Создаваемый String будет соответствовать последовательности символов в s, рассматриваемой как буквальная последовательность. Слэши ('\') и знаки доллара ('$') не будут иметь специального значения.
Parameters:
s - Строка, которая должна быть заменена буквальным значением
Returns:
Буквальный строковый заменитель
Since:
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());
Parameters:
sb - Целевая буферная строка
replacement - Строка замены
Returns:
Этот сопоставитель
Throws:
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".

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

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, то будут использоваться непрозрачные границы.

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

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

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

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

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

Spec-Zone.ru

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