Класс Matcher
- Все реализуемые интерфейсы:
MatchResult
public final class Matcher extends Object implements MatchResult
Pattern. Сопоставитель создается из шаблона с помощью вызова метода matcher шаблона. После создания, сопоставитель может использоваться для выполнения трёх типов операций сопоставления:
Метод
matchesпытается сопоставить всю входную последовательность с шаблоном.Метод
lookingAtпытается сопоставить входную последовательность, начиная с начала, с шаблоном.Метод
findсканирует входную последовательность, ища следующую подпоследовательность, которая соответствует шаблону.
Каждый из этих методов возвращает логическое значение, указывающее на успех или неудачу. Более подробная информация об успешном сопоставлении может быть получена путём запроса состояния сопоставителя.
Сопоставитель находит соответствия в подмножестве своего ввода, называемом областью. По умолчанию область содержит весь входной текст сопоставителя. Область может быть изменена с помощью метода region и запрошена с помощью методов regionStart и regionEnd. Способ, которым границы области взаимодействуют с некоторыми конструкциями шаблона, может быть изменён. Подробнее см. useAnchoringBounds и useTransparentBounds.
Этот класс также определяет методы для замены сопоставленных подпоследовательностей новыми строками, содержимое которых, если необходимо, можно вычислить по результату сопоставления. Методы appendReplacement и appendTail могут использоваться вместе для сбора результата в существующий буфер строк или буфер строк. В качестве альтернативы, можно использовать более удобный метод replaceAll для создания строки, в которой каждая сопоставленная подпоследовательность во входной последовательности заменяется.
Явное состояние сопоставителя включает начальный и конечный индексы последнего успешного сопоставления. Он также включает начальные и конечные индексы подпоследовательности входного текста, захваченной каждым группой захвата в шаблоне, а также общее количество таких подпоследовательностей. Для удобства также предоставляются методы для возвращения этих захваченных подпоследовательностей в виде строк.
Явное состояние сопоставителя изначально не определено; попытка запросить любую его часть до успешного сопоставления приведёт к возбуждению исключения IllegalStateException. Явное состояние сопоставителя пересчитывается каждой операцией сопоставления.
Неявное состояние сопоставителя включает входную последовательность символов, а также позицию добавления, которая изначально равна нулю и обновляется методом appendReplacement.
Сопоставитель может быть сброшен явно, вызвав его метод reset() или, если требуется новая входная последовательность, его метод reset(CharSequence). Сброс сопоставителя отбрасывает его информацию об явном состоянии и устанавливает позицию добавления в ноль.
Экземпляры этого класса не являются потокобезопасными.
- С:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Matcher |
appendReplacement |
Реализует нетерминальную операцию добавления и замены. |
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)
Этот метод приводит к тому, что этот объект соответствия теряет информацию о группах последнего совпадения. Позиция объекта соответствия в входных данных сохраняется, а его последняя позиция добавления не изменяется.
- Параметры:
-
newPattern- Новый шаблон, используемый этим объектом соответствия - Возвращает:
- Этот объект соответствия
- Исключения:
-
IllegalArgumentException- Если newPattern являетсяnull - С:
- 1.5
reset
public Matcher reset()
Сброс объекта соответствия отбрасывает всю явную информацию о его состоянии и устанавливает позицию добавления в ноль. Область объекта соответствия устанавливается в стандартную область, которая является всей последовательностью символов. Якорение и прозрачность границ области этого объекта соответствия не изменяются.
- Возвращает:
- Этот объект соответствия
reset
public Matcher reset(CharSequence input)
Сброс объекта соответствия отбрасывает всю явную информацию о его состоянии и устанавливает позицию добавления в ноль. Область объекта соответствия устанавливается в стандартную область, которая является всей последовательностью символов. Якорение и прозрачность границ области этого объекта соответствия не изменяются.
- Параметры:
-
input- Новая последовательность символов ввода - Возвращает:
- Этот объект соответствия
start
public int start()
- Определено в:
-
startв интерфейсеMatchResult - Возвращает:
- Индекс первого сопоставленного символа
- Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно
start
public int start(int group)
Группы захвата индексируются слева направо, начиная с единицы. Группа ноль обозначает весь шаблон, поэтому выражение m.start(0) эквивалентно m.start().
- Определено в:
-
startв интерфейсеMatchResult - Параметры:
-
group- Индекс захватывающей группы в шаблоне этого объекта соответствия - Возвращает:
- Индекс первого символа, захваченного группой, или
-1, если совпадение было успешным, но сама группа ничего не сопоставила - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно -
IndexOutOfBoundsException- Если в шаблоне нет захватывающей группы с указанным индексом
start
public int start(String name)
- Определено в:
-
startв интерфейсеMatchResult - Параметры:
-
name- Имя именной захватывающей группы в шаблоне этого объекта соответствия - Возвращает:
- Индекс первого символа, захваченного группой, или
-1, если совпадение было успешным, но сама группа ничего не сопоставила - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно -
IllegalArgumentException- Если в шаблоне нет захватывающей группы с указанным именем - С:
- 1.8
end
public int end()
- Определено в:
-
endв интерфейсеMatchResult - Возвращает:
- Смещение после последнего сопоставленного символа
- Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно
end
public int end(int group)
Группы захвата индексируются слева направо, начиная с единицы. Группа ноль обозначает весь шаблон, поэтому выражение m.end(0) эквивалентно m.end().
- Определено в:
-
endв интерфейсеMatchResult - Параметры:
-
group- Индекс захватывающей группы в шаблоне этого объекта соответствия - Возвращает:
- Смещение после последнего символа, захваченного группой, или
-1, если совпадение было успешным, но сама группа ничего не сопоставила - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно -
IndexOutOfBoundsException- Если в шаблоне нет захватывающей группы с указанным индексом
end
public int end(String name)
- Определено в:
-
endв интерфейсеMatchResult - Параметры:
-
name- Имя именной захватывающей группы в шаблоне этого объекта соответствия - Возвращает:
- Смещение после последнего символа, захваченного группой, или
-1, если совпадение было успешным, но сама группа ничего не сопоставила - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно -
IllegalArgumentException- Если в шаблоне нет захватывающей группы с указанным именем - С:
- 1.8
group
public String group()
Для объекта соответствия m с последовательностью ввода s, выражения m.group() и s.substring(m.start(), m. end()) эквивалентны.
Обратите внимание, что некоторые шаблоны, например a*, соответствуют пустой строке. Этот метод вернет пустую строку, когда шаблон успешно соответствует пустой строке во входных данных.
- Определено в:
-
groupв интерфейсеMatchResult - Возвращает:
- Сопоставленная (возможно, пустая) подпоследовательность предыдущего совпадения в виде строки или
null, если объект соответствия с предыдущим совпадением изменил свойPattern, но новая попытка соответствия еще не была выполнена - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно
group
public String group(int group)
Для объекта соответствия m, последовательности ввода s и индекса группы g, выражения m.group(g) и s.substring(m.start(g
), m.end(g)) эквивалентны.
Группы захвата индексируются слева направо, начиная с единицы. Группа ноль обозначает весь шаблон, поэтому выражение m.group(0) эквивалентно m.group().
Если совпадение было успешным, но указанная группа не сопоставила никакой части входной последовательности, то возвращается null. Обратите внимание, что некоторые группы, например (a*), соответствуют пустой строке. Этот метод вернет пустую строку, когда такая группа успешно соответствует пустой строке во входных данных.
- Определено в:
-
groupв интерфейсеMatchResult - Параметры:
-
group- Индекс захватывающей группы в шаблоне этого объекта соответствия - Возвращает:
- Подпоследовательность (возможно, пустая), захваченная группой во время предыдущего совпадения, или
null, если группа не сопоставила часть входных данных или если состояние объекта соответствияPatternизменилось после успешного совпадения, но новая попытка соответствия не была предпринята - Исключения:
-
IllegalStateException- Если попытка соответствия еще не была выполнена или предыдущая операция соответствия завершилась неудачно -
IndexOutOfBoundsException- Если в шаблоне нет захватывающей группы с указанным индексом
группа
public String group(String name)
Если сопоставление прошло успешно, но указанная группа не смогла сопоставить какую-либо часть входной последовательности, то возвращается null. Обратите внимание, что некоторые группы, например (a*), сопоставляют пустую строку. Этот метод вернёт пустую строку, когда такая группа успешно сопоставит пустую строку во входных данных.
- Указано:
-
groupв интерфейсеMatchResult - Параметры:
-
name- Имя именованной группы захвата в шаблоне этого совпадения - Возвращает:
- Подпоследовательность (возможно, пустую), захваченная именованной группой во время предыдущего сопоставления, или
null, если группа не смогла сопоставить часть входных данных - Выбрасывает:
-
IllegalStateException- Если сопоставление ещё не пыталось, или если предыдущая операция сопоставления завершилась неудачей -
IllegalArgumentException- Если в шаблоне нет группы захвата с данным именем - С:
- 1.7
groupCount
public int groupCount()
Группа ноль по умолчанию обозначает весь шаблон. Она не включена в этот счёт.
Любое целое число без знака, меньшее или равное значению, возвращаемому этим методом, гарантированно является допустимым индексом группы для этого совпадения.
- Указано:
-
groupCountв интерфейсеMatchResult - Возвращает:
- Количество групп захвата в шаблоне этого совпадения
matches
public boolean matches()
Если сопоставление успешно, то дополнительную информацию можно получить через методы start, end и group.
- Возвращает:
-
trueесли и только если вся последовательность региона соответствует шаблону этого совпадения
find
public boolean find()
Этот метод начинается в начале региона этого совпадения, или, если предыдущее обращение к методу было успешным, а совпадение с тех пор не сбрасывалось, с первого символа, не сопоставленного предыдущим совпадением.
Если сопоставление успешно, то дополнительную информацию можно получить через методы start, end и group.
- Возвращает:
-
trueесли и только если подпоследовательность входной последовательности соответствует шаблону этого совпадения
find
public boolean find(int start)
Если сопоставление успешно, то дополнительную информацию можно получить через методы start, end и group, а последующие обращения к методу find() будут начинаться с первого символа, не сопоставленного этим совпадением.
- Параметры:
-
start- индекс, с которого начинать поиск совпадения - Возвращает:
-
trueесли и только если подпоследовательность входной последовательности, начиная с данного индекса, соответствует шаблону этого совпадения - Выбрасывает:
-
IndexOutOfBoundsException- Если start меньше нуля или если start больше длины входной последовательности.
lookingAt
public boolean lookingAt()
Подобно методу matches, этот метод всегда начинается в начале региона; в отличие от этого метода, он не требует, чтобы весь регион был сопоставлен.
Если сопоставление успешно, то дополнительную информацию можно получить через методы start, end и group.
- Возвращает:
-
trueесли и только если префикс входной последовательности соответствует шаблону этого совпадения
quoteReplacement
public static String quoteReplacement(String s)
String для указанной String. Этот метод создаёт String, который будет работать как буквальная замена s в методе appendReplacement класса Matcher. Создаваемая String будет соответствовать последовательности символов в s, рассматриваемой как буквальная последовательность. Слэши ('\') и знаки доллара ('$') не будут иметь особого значения.- Параметры:
-
s- Строка, которая должна быть обработана как буквальная - Возвращает:
- Буквальная строковая замена
- С:
- 1.5
appendReplacement
public Matcher appendReplacement(StringBuffer sb, String replacement)
Этот метод выполняет следующие действия:
Он считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их в предоставленный буфер строк. Он останавливается после считывания последнего символа, предшествующего предыдущему совпадению, то есть символа с индексом
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 является fail-fast и будет, при возможности, выбрасывать ConcurrentModificationException в случае обнаружения такого изменения.
- Returns:
- последовательный поток результатов сопоставления.
- Since:
- 9
replaceFirst
public String replaceFirst(String replacement)
Этот метод сначала сбрасывает этот сопоставитель. Затем он сканирует входную последовательность, ища соответствие шаблону. Символы, которые не являются частью соответствия, непосредственно добавляются к строке результата; соответствие заменяется в результате строкой замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как в методе appendReplacement.
Обратите внимание, что обратные слэши (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, если бы она обрабатывалась как строка замены буквально. Знаки доллара могут обрабатываться как ссылки на захваченные подпоследовательности, как описано выше, а обратные слэши используются для экранирования буквенных символов в строке замены.
При заданном регулярном выражении dog, вводе "zzzdogzzzdogzzz" и строке замены "cat", вызов этого метода на сопоставителе для этого выражения вернёт строку "zzzcatzzzdogzzz".
Вызов этого метода изменяет состояние этого сопоставителя. Если сопоставитель должен быть использован в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
- Параметры:
-
replacement- Строка замены - Возвращает:
- Строка, построенная путём замены первой совпадающей подпоследовательности строкой замены, при необходимости заменяя захваченные подпоследовательности
replaceFirst
public String replaceFirst(Function<MatchResult, String> replacer)
Этот метод сначала сбрасывает этот сопоставитель. Затем он сканирует входную последовательность, ища соответствие шаблону. Символы, которые не являются частью соответствия, непосредственно добавляются к строке результата; соответствие заменяется в результате применением функции замены, которая возвращает строку замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как в методе appendReplacement.
Обратите внимание, что обратные слэши (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, если бы она обрабатывалась как строка замены буквально. Знаки доллара могут обрабатываться как ссылки на захваченные подпоследовательности, как описано выше, а обратные слэши используются для экранирования буквенных символов в строке замены.
При заданном регулярном выражении dog, вводе "zzzdogzzzdogzzz" и функции mr -> mr.group().toUpperCase(), вызов этого метода на сопоставителе для этого выражения вернёт строку "zzzDOGzzzdogzzz".
Вызов этого метода изменяет состояние этого сопоставителя. Если сопоставитель должен быть использован в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
Функция замены не должна изменять состояние этого сопоставителя во время замены. Этот метод будет, применительно к лучшему варианту, выбрасывать исключение ConcurrentModificationException, если такое изменение будет обнаружено.
Состояние результата сопоставления, переданного функции замены, гарантируется как постоянное только в течение выполнения вызова функции замены и только если функция замены не изменяет состояние этого сопоставителя.
- Описание реализации:
- Эта реализация применяет функцию замены к этому сопоставителю, который является экземпляром
MatchResult. - Параметры:
-
replacer- Функция, которая будет применена к результату сопоставления этого сопоставителя, возвращающая строку замены. - Возвращает:
- Строка, построенная путём замены первой совпадающей подпоследовательности результатом применения функции замены к совпадающей подпоследовательности, при необходимости заменяя захваченные подпоследовательности.
- Исключения:
-
NullPointerException- если функция замены равна null -
ConcurrentModificationException- если будет обнаружено (применительно к лучшему варианту), что функция замены изменила состояние этого сопоставителя - С:
- 9
region
public Matcher region(int start, int end)
start, и заканчивая индексом, заданным параметром end. В зависимости от прозрачности и привязки (см. useTransparentBounds и useAnchoringBounds), некоторые конструкции, такие как якоря, могут вести себя по-разному на границах или около границ области.
- Параметры:
-
start- Индекс начала поиска (включительно) -
end- Индекс окончания поиска (исключительно) - Возвращает:
- Этот сопоставитель
- Исключения:
-
IndexOutOfBoundsException- Если start или end меньше нуля, если start больше длины входной последовательности, если end больше длины входной последовательности или если start больше end. - С:
- 1.5
regionStart
public int regionStart()
regionStart (включительно) и regionEnd (исключительно).- Возвращает:
- Начальная точка области этого сопоставителя
- С:
- 1.5
regionEnd
public int regionEnd()
regionStart (включительно) и regionEnd (исключительно).- Возвращает:
- конечная точка области этого сопоставителя
- С:
- 1.5
hasTransparentBounds
public boolean hasTransparentBounds()
Этот метод возвращает true, если этот сопоставитель использует прозрачные границы, false если он использует непрозрачные границы.
См. useTransparentBounds для описания прозрачных и непрозрачных границ.
По умолчанию сопоставитель использует непрозрачные границы области.
- Возвращает:
-
true, если этот сопоставитель использует прозрачные границы,falseв противном случае. - С:
- 1.5
- См. также:
useTransparentBounds
public Matcher useTransparentBounds(boolean b)
Вызов этого метода со значением true установит этот сопоставитель для использования прозрачных границ. Если булевое значение является false, то будут использоваться непрозрачные границы.
Используя прозрачные границы, границы области этого сопоставителя прозрачны для предвычислений, последующих вычислений и конструкций сопоставления границ. Эти конструкции могут видеть за пределами границ области, чтобы увидеть, подходит ли соответствие.
Используя непрозрачные границы, границы области этого сопоставителя непрозрачны для предвычислений, последующих вычислений и конструкций сопоставления границ, которые могут пытаться увидеть за их пределами. Эти конструкции не могут смотреть за пределы границ, поэтому они не смогут сопоставить что-либо за пределами области.
По умолчанию сопоставитель использует непрозрачные границы.
- Параметры:
-
b- булево значение, указывающее, использовать непрозрачные или прозрачные области - Возвращает:
- Этот сопоставитель
- С:
- 1.5
- См. также:
hasAnchoringBounds
public boolean hasAnchoringBounds()
Этот метод возвращает true, если этот сопоставитель использует привязанные границы, false в противном случае.
См. useAnchoringBounds для описания привязанных границ.
По умолчанию сопоставитель использует привязанные границы области.
- Возвращает:
-
true, если этот сопоставитель использует привязанные границы,falseв противном случае. - С:
- 1.5
- См. также:
useAnchoringBounds
public Matcher useAnchoringBounds(boolean b)
Вызов этого метода со значением true установит этот сопоставитель для использования привязанных границ. Если булевое значение равно false, то будут использоваться непривязанные границы.
Используя привязанные границы, границы области этого сопоставителя соответствуют якорям, таким как ^ и $.
Без привязанных границ границы области этого сопоставителя не будут соответствовать якорям, таким как ^ и $.
По умолчанию сопоставитель использует привязанные границы области.
- Параметры:
-
b- булево значение, указывающее, использовать ли привязанные границы. - Возвращает:
- Этот сопоставитель
- С:
- 1.5
- См. также:
toString
public String toString()
Возвращает строковое представление этого сопоставителя. Строковое представление Matcher содержит информацию, которая может быть полезна для отладки. Точный формат не определен.
hitEnd
public boolean hitEnd()
Возвращает true, если в последней операции поиска, выполненной этим сопоставителем, поисковый движок достиг конца входных данных.
Когда этот метод возвращает true, возможно, что дополнительные входные данные изменили бы результат последнего поиска.
- Возвращает:
- true, если в последнем поиске был достигнут конец входных данных; в противном случае false
- Since:
- 1.5
requireEnd
public boolean requireEnd()
Возвращает true, если дополнительные входные данные могут изменить положительный результат на отрицательный.
Если этот метод возвращает true, а совпадение найдено, то дополнительные входные данные могут привести к потере совпадения. Если этот метод возвращает false, а совпадение найдено, то дополнительные входные данные могут изменить совпадение, но оно не будет потеряно. Если совпадение не найдено, то requireEnd не имеет смысла.
- Возвращает:
- true, если дополнительные входные данные могут изменить положительное совпадение на отрицательное.
- Since:
- 1.5
namedGroups
public Map<String,Integer> namedGroups()
- Specified by:
-
namedGroupsв интерфейсеMatchResult - Возвращает:
- неизменяемую карту имен захватывающих групп и соответствующих им номеров групп
- Since:
- 20
hasMatch
public boolean hasMatch()
this действительное совпадение, полученное в результате предыдущей операции поиска или сопоставления.- Specified by:
-
hasMatchв интерфейсеMatchResult - Возвращает:
- содержит ли
thisдействительное совпадение - Since:
- 20
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/regex/Matcher.html