Класс 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 |
Реализует нетерминальную операцию добавления и замены. |
Matcher |
appendReplacement |
Реализует нетерминальную операцию добавления и замены. |
StringBuffer |
appendTail |
Реализует терминальную операцию добавления и замены. |
StringBuilder |
appendTail |
Реализует терминальную операцию добавления и замены. |
int |
end() |
Возвращает смещение после последнего совпавшего символа. |
int |
end |
Возвращает смещение после последнего символа подпоследовательности, захваченной заданной группой во время предыдущей операции сопоставления. |
int |
end |
Возвращает смещение после последнего символа подпоследовательности, захваченной заданной именной группой во время предыдущей операции сопоставления. |
boolean |
find() |
Попытка найти следующую подпоследовательность входной последовательности, которая соответствует шаблону. |
boolean |
find |
Сбрасывает этот матчер и затем пытается найти следующую подпоследовательность входной последовательности, которая соответствует шаблону, начиная с указанного индекса. |
String |
group() |
Возвращает подпоследовательность входных данных, сопоставленную предыдущим сопоставлением. |
String |
group |
Возвращает подпоследовательность входных данных, захваченную заданной группой во время предыдущей операции сопоставления. |
String |
group |
Возвращает подпоследовательность входных данных, захваченную заданной именной группой во время предыдущей операции сопоставления. |
int |
groupCount() |
Возвращает количество захватывающих групп в шаблоне этого матчера. |
boolean |
hasAnchoringBounds() |
Запрашивает закрепление границ области для этого матчера. |
boolean |
hasMatch() |
Возвращает, содержит ли this действительное совпадение из предыдущей операции сопоставления или поиска. |
boolean |
hasTransparentBounds() |
Запрашивает прозрачность границ области для этого матчера. |
boolean |
hitEnd() |
Возвращает true, если в последней операции сопоставления, выполненной этим матчером, поисковым движком был достигнут конец входных данных. |
boolean |
lookingAt() |
Попытка сопоставить входную последовательность, начиная с начала области, с шаблоном. |
boolean |
matches() |
Попытка сопоставить всю область с шаблоном. |
Map |
namedGroups() |
Возвращает неизменяемую карту, отображающую имена захватывающих групп в номера групп. |
Pattern |
pattern() |
Возвращает шаблон, интерпретируемый этим матчером. |
static String |
quoteReplacement |
Возвращает буквальное замещение String для указанного String. |
Matcher |
region |
Устанавливает пределы области этого матчера. |
int |
regionEnd() |
Отчет о конечном индексе (исключительно) области этого матчера. |
int |
regionStart() |
Отчет об индексе начала области этого матчера. |
String |
replaceAll |
Заменяет все подпоследовательности входной последовательности, которые соответствуют шаблону, заданной строкой замены. |
String |
replaceAll |
Заменяет все подпоследовательности входной последовательности, которые соответствуют шаблону, результатом применения заданной функции замены к результату сопоставления этого матчера, соответствующему этой подпоследовательности. |
String |
replaceFirst |
Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, заданной строкой замены. |
String |
replaceFirst |
Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, результатом применения заданной функции замены к результату сопоставления этого матчера, соответствующему этой подпоследовательности. |
boolean |
requireEnd() |
Возвращает true, если дополнительные входные данные могут изменить положительное сопоставление на отрицательное. |
Matcher |
reset() |
Сбрасывает этот матчер. |
Matcher |
reset |
Сбрасывает этот матчер с новой входной последовательностью. |
Stream |
results() |
Возвращает поток результатов сопоставления для каждой подпоследовательности входной последовательности, которая соответствует шаблону. |
int |
start() |
Возвращает начальный индекс предыдущего сопоставления. |
int |
start |
Возвращает начальный индекс подпоследовательности, захваченной заданной группой во время предыдущей операции сопоставления. |
int |
start |
Возвращает начальный индекс подпоследовательности, захваченной заданной именной группой во время предыдущей операции сопоставления. |
MatchResult |
toMatchResult() |
Возвращает состояние сопоставления этого матчера как MatchResult. |
String |
toString() |
Возвращает строковое представление этого матчера. |
Matcher |
useAnchoringBounds |
Устанавливает закрепление границ области для этого матчера. |
Matcher |
usePattern |
Изменяет Pattern, который этот Matcher использует для поиска совпадений. |
Matcher |
useTransparentBounds |
Устанавливает прозрачность границ области для этого матчера. |
Подробное описание методов
pattern
public Pattern pattern()
- Возвращает:
- Шаблон, для которого был создан этот объект совпадения
toMatchResult
public MatchResult toMatchResult()
MatchResult. Результат не зависит от последующих операций над этим объектом совпадения.- Возвращает:
- объект
MatchResultсо состоянием этого объекта совпадения - С:
- 1.5
usePattern
public Matcher usePattern(Pattern newPattern)
Pattern, который этот Matcher использует для поиска совпадений. Этот метод приводит к потере информации об группах последнего совпадения. Положение объекта совпадения во входных данных сохраняется, а последнее положение добавления не изменяется.
- Параметры:
-
newPattern- Новый шаблон, используемый этим объектом совпадения - Возвращает:
- Этот объект совпадения
- Исключения:
-
IllegalArgumentException- Если newPatternnull - С:
- 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)
Этот метод выполняет следующие действия:
Он считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их к заданному буферу строк. Он останавливается после считывания последнего символа, предшествующего предыдущему совпадению, то есть символа с индексом
start()-1.Он добавляет заданную строку замены в буфер строк.
Он устанавливает позицию добавления этого сопоставителя в индекс последнего сопоставленного символа плюс один, то есть в
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)
Этот метод выполняет следующие действия:
Он считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их в предоставленный строковый буфер. Он останавливается после чтения последнего символа, предшествующего предыдущему совпадению, то есть символа с индексом
start()-1.Он добавляет заданную строку замены в строковый буфер.
Он устанавливает позицию добавления этого соответствия в индекс последнего совпавшего символа плюс один, то есть в
end().
Строка замены может содержать ссылки на подпоследовательности, захваченные во время предыдущего совпадения: Каждая встреча $g будет заменена результатом вычисления group(g). Первая цифра после $ всегда рассматривается как часть ссылки на группу. Последующие цифры включаются в g, если они образуют корректную ссылку на группу. Только цифры от '0' до '9' считаются потенциальными компонентами ссылки на группу. Например, если вторая группа соответствовала строке "foo", а строка замены была "$2bar", то в строковый буфер будет добавлено значение "foobar". Знак доллара ($) может быть включен в строку замены как литерал, если ему предшествует обратная косая черта (\$).
Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, что были бы при обработке её как строки замены-литерала. Знаки доллара могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования литерных символов в строке замены.
Этот метод предназначен для использования в цикле вместе с методами appendTail и find. Например, следующий код выводит one dog two dogs in the yard в поток стандартного вывода:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuilder sb = new StringBuilder();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
- 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
public Matcher useTransparentBounds(boolean b)
Вызов этого метода с аргументом true установит для этого сопоставителя прозрачные границы. Если булевый аргумент равен false, будут использоваться непрозрачные границы.
При использовании прозрачных границ, границы области действия этого сопоставителя являются прозрачными для предпросмотра, заднего просмотра и конструкций соответствия границ. Эти конструкции могут видеть за пределами границ области, чтобы определить, подходит ли совпадение.
При использовании непрозрачных границ, границы области действия этого сопоставителя непрозрачны для предпросмотра, заднего просмотра и конструкций соответствия границ, которые могут пытаться увидеть за ними. Эти конструкции не могут видеть за границами, поэтому они не смогут найти ничего за пределами области.
По умолчанию сопоставитель использует непрозрачные границы.
- Parameters:
-
b- булево значение, указывающее, использовать ли непрозрачные или прозрачные области - Returns:
- этот сопоставитель
- Since:
- 1.5
- See Also:
hasAnchoringBounds
public boolean hasAnchoringBounds()
Этот метод возвращает true если этот сопоставитель использует привязанные границы, false в противном случае.
См. useAnchoringBounds для описания привязанных границ.
По умолчанию сопоставитель использует привязанные границы области.
- Returns:
-
trueесли этот сопоставитель использует привязанные границы,falseв противном случае. - Since:
- 1.5
- See Also:
useAnchoringBounds
public Matcher useAnchoringBounds(boolean b)
Вызов этого метода с аргументом true установит для этого сопоставителя привязанные границы. Если булевый аргумент равен false, будут использоваться непривязанные границы.
При использовании привязанных границ, границы области действия этого сопоставителя соответствуют якорям, таким как ^ и $.
Без привязанных границ, границы области действия этого сопоставителя не будут соответствовать якорям, таким как ^ и $.
По умолчанию сопоставитель использует привязанные границы области.
- Parameters:
-
b- булево значение, указывающее, использовать ли привязанные границы. - Returns:
- этот сопоставитель
- Since:
- 1.5
- See Also:
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