Класс 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 |
hasTransparentBounds() |
Запрашивает прозрачность границ области для этого матчера. |
boolean |
hitEnd() |
Возвращает true, если в последней операции сопоставления, выполненной этим матчером, движок поиска достиг конца входных данных. |
boolean |
lookingAt() |
Попытка сопоставить входную последовательность, начиная с начала области, с шаблоном. |
boolean |
matches() |
Попытка сопоставить всю область с шаблоном. |
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<MatchResult> |
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)
Этот метод заставляет это соответствие потерять информацию о группах последнего совпадения. Позиция соответствия во входных данных сохраняется, а последняя позиция добавления не изменяется.
- Параметры:
-
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)
- Параметры:
-
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)
Этот метод выполняет следующие действия:
Он считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их в заданный буфер строк. Он останавливается после считывания последнего символа, предшествующего предыдущему совпадению, то есть символа с индексом
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());
- Parameters:
-
sb- Целевая буферная строка -
replacement- Строка замены - Returns:
- Этот сопоставитель
- Throws:
-
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 является 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
public Matcher useTransparentBounds(boolean b)
Вызов этого метода с аргументом true установит этот матчер на использование прозрачных границ. Если булевый аргумент равен false, то будут использоваться непрозрачные границы.
Используя прозрачные границы, границы области этого матчера прозрачны для конструкций lookahead, lookbehind и boundary matching. Эти конструкции могут видеть за пределами границ области, чтобы увидеть, подходит ли соответствие.
Используя непрозрачные границы, границы области этого матчера непрозрачны для конструкций lookahead, lookbehind и boundary matching, которые могут пытаться увидеть за ними. Эти конструкции не могут смотреть за пределы границ, поэтому они не найдут ничего за пределами области.
По умолчанию матчер использует непрозрачные границы.
- 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
© 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