Класс 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() |
Возвращает true, если 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 |
Задаёт прозрачность границ области для этого сопоставителя. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного времени. |
Подробное описание методов
pattern
public Pattern pattern()
- Возвращает:
- Шаблон, для которого был создан этот сопоставитель
toMatchResult
public MatchResult toMatchResult()
MatchResult. Последующие операции, выполняемые над этим сопоставителем, не влияют на результат.- Возвращает:
MatchResultс состоянием этого сопоставителя- С версии:
- 1.5
usePattern
public Matcher usePattern(Pattern newPattern)
Pattern, который этот Matcher использует для поиска совпадений. Этот метод приводит к потере информации о группах последнего найденного совпадения. Позиция сопоставителя во входных данных сохраняется, а позиция последнего добавления не изменяется.
- Параметры:
-
newPattern— новый шаблон, используемый этим сопоставителем - Возвращает:
- Этот сопоставитель
- Исключения:
-
IllegalArgumentException— если newPattern равноnull - С версии:
- 1.5
reset
public Matcher reset()
Сброс сопоставителя удаляет всю информацию о его явном состоянии и устанавливает позицию добавления в ноль. Для сопоставителя задаётся область по умолчанию, то есть вся его последовательность символов. Привязка и прозрачность границ области этого сопоставителя не изменяются.
- Возвращает:
- Этот сопоставитель
reset
public Matcher reset(CharSequence input)
Сброс сопоставителя удаляет всю информацию о его явном состоянии и устанавливает позицию добавления в ноль. Для сопоставителя задаётся область по умолчанию, то есть вся его последовательность символов. Привязка и прозрачность границ области этого сопоставителя не изменяются.
- Параметры:
-
input— новая входная последовательность символов - Возвращает:
- Этот сопоставитель
start
public int start()
- Определено в:
-
startв интерфейсеMatchResult - Возвращает:
- Индекс первого совпавшего символа
- Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
start
public int start(int group)
Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.start(0) эквивалентно m.start().
- Определено в:
-
startв интерфейсеMatchResult - Параметры:
-
group— индекс захватывающей группы в шаблоне этого сопоставителя - Возвращает:
- Индекс первого символа, захваченного группой, или
-1, если поиск совпадения завершился успешно, но сама группа ничего не захватила - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IndexOutOfBoundsException— если в шаблоне нет захватывающей группы с указанным индексом
start
public int start(String name)
- Определено в:
-
startв интерфейсеMatchResult - Параметры:
-
name— имя именованной захватывающей группы в шаблоне этого сопоставителя - Возвращает:
- Индекс первого символа, захваченного группой, или
-1, если поиск совпадения завершился успешно, но сама группа ничего не захватила - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IllegalArgumentException— если в шаблоне нет захватывающей группы с указанным именем - С версии:
- 1.8
end
public int end()
- Определено в:
-
endв интерфейсеMatchResult - Возвращает:
- Смещение после последнего совпавшего символа
- Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
end
public int end(int group)
Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.end(0) эквивалентно m.end().
- Определено в:
-
endв интерфейсеMatchResult - Параметры:
-
group— индекс захватывающей группы в шаблоне этого сопоставителя - Возвращает:
- Смещение после последнего символа, захваченного группой, или
-1, если поиск совпадения завершился успешно, но сама группа ничего не захватила - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IndexOutOfBoundsException— если в шаблоне нет захватывающей группы с указанным индексом
end
public int end(String name)
- Определено в:
-
endв интерфейсеMatchResult - Параметры:
-
name— имя именованной захватывающей группы в шаблоне этого сопоставителя - Возвращает:
- Смещение после последнего символа, захваченного группой, или
-1, если поиск совпадения завершился успешно, но сама группа ничего не захватила - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IllegalArgumentException— если в шаблоне нет захватывающей группы с указанным именем - С версии:
- 1.8
group
public String group()
Для сопоставителя m с входной последовательностью s выражения m.group() и s.substring(m.start(), m. end()) эквивалентны.
Обратите внимание, что некоторые шаблоны, например a*, совпадают с пустой строкой. Этот метод вернёт пустую строку, если шаблон успешно совпадёт с пустой строкой во входных данных.
- Определено в:
-
groupв интерфейсеMatchResult - Возвращает:
- Возможно, пустая подпоследовательность, совпавшая при предыдущем поиске совпадения, в виде строки, либо
null, если у сопоставителя с предыдущим совпадением изменилсяPattern, но новый поиск совпадения ещё не выполнялся - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей
group
public String group(int group)
Для сопоставителя m, входной последовательности s и индекса группы g выражения m.group(g) и s.substring(m.start(g
), m.end(g)) эквивалентны.
Захватывающие группы нумеруются слева направо, начиная с единицы. Группа с номером ноль обозначает весь шаблон, поэтому выражение m.group(0) эквивалентно m.group().
Если поиск совпадения завершился успешно, но указанная группа не совпала ни с одной частью входной последовательности, возвращается null. Обратите внимание, что некоторые группы, например (a*), совпадают с пустой строкой. Этот метод вернёт пустую строку, если такая группа успешно совпадёт с пустой строкой во входных данных.
- Определено в:
-
groupв интерфейсеMatchResult - Параметры:
-
group— индекс захватывающей группы в шаблоне этого сопоставителя - Возвращает:
- Возможно, пустая подпоследовательность, захваченная группой во время предыдущего поиска совпадения, либо
null, если группа не совпала с частью входных данных или еслиPatternсопоставителя изменился после успешного поиска совпадения, но новый поиск совпадения ещё не выполнялся - Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IndexOutOfBoundsException— если в шаблоне нет захватывающей группы с указанным индексом
group
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 меньше нуля или больше длины входной последовательности.
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().
Строка замены может содержать ссылки на подпоследовательности, захваченные во время предыдущего поиска совпадения: каждое вхождение ${name} или $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());
- Параметры:
-
sb— целевой построитель строк -
replacement— строка замены - Возвращает:
- Этот сопоставитель
- Исключения:
-
IllegalStateException— если поиск совпадения ещё не выполнялся или предыдущая операция поиска совпадения завершилась неудачей -
IllegalArgumentException— если строка замены ссылается на именованную захватывающую группу, отсутствующую в шаблоне -
IndexOutOfBoundsException— если строка замены ссылается на захватывающую группу, отсутствующую в шаблоне - С версии:
- 9
appendTail
public StringBuffer appendTail(StringBuffer sb)
Этот метод считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный строковый буфер. Он предназначен для вызова после одного или нескольких вызовов метода appendReplacement, чтобы скопировать остаток входной последовательности.
- Параметры:
-
sb— целевой строковый буфер - Возвращает:
- Целевой строковый буфер
appendTail
public StringBuilder appendTail(StringBuilder sb)
Этот метод считывает символы из входной последовательности, начиная с позиции добавления, и добавляет их в указанный построитель строк. Он предназначен для вызова после одного или нескольких вызовов метода appendReplacement, чтобы скопировать остаток входной последовательности.
- Параметры:
-
sb— целевой построитель строк - Возвращает:
- Целевой построитель строк
- С версии:
- 9
replaceAll
public String replaceAll(String replacement)
Сначала этот метод сбрасывает состояние сопоставителя. Затем он просматривает входную последовательность в поисках совпадений с шаблоном. Символы, не входящие ни в одно совпадение, напрямую добавляются в результирующую строку; каждое совпадение заменяется в результирующей строке строкой замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.
Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от тех, которые получились бы при обработке строки как буквальной строки замены. Знаки доллара могут интерпретироваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования буквальных символов в строке замены.
Для регулярного выражения a*b, входных данных "aabfooaabfooabfoob" и строки замены "-" вызов этого метода для сопоставителя с указанным выражением вернёт строку "-foo-foo-foo-".
Вызов этого метода изменяет состояние сопоставителя. Если сопоставитель будет использоваться для дальнейших операций поиска совпадений, его следует предварительно сбросить.
- Параметры:
-
replacement— строка замены - Возвращает:
- Строка, сформированная заменой каждой совпавшей подпоследовательности строкой замены с подстановкой захваченных подпоследовательностей при необходимости
replaceAll
public String replaceAll(Function<MatchResult, String> replacer)
Сначала этот метод сбрасывает состояние сопоставителя. Затем он просматривает входную последовательность в поисках совпадений с шаблоном. Символы, не входящие ни в одно совпадение, напрямую добавляются в результирующую строку; каждое совпадение заменяется результатом применения функции замены, возвращающей строку замены. Каждая строка замены может содержать ссылки на захваченные подпоследовательности, как и в методе appendReplacement.
Обратите внимание, что обратные косые черты (\) и знаки доллара ($) в строке замены могут привести к результатам, отличающимся от тех, которые получились бы при обработке строки как буквальной строки замены. Знаки доллара могут интерпретироваться как ссылки на захваченные подпоследовательности, как описано выше, а обратные косые черты используются для экранирования буквальных символов в строке замены.
Для регулярного выражения dog, входных данных "zzzdogzzzdogzzz" и функции mr -> mr.group().toUpperCase() вызов этого метода для сопоставителя с указанным выражением вернёт строку "zzzDOGzzzDOGzzz".
Вызов этого метода изменяет состояние сопоставителя. Если сопоставитель будет использоваться для дальнейших операций поиска совпадений, его следует предварительно сбросить.
Функция замены не должна изменять состояние сопоставителя во время замены. При обнаружении такого изменения этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException.
Состояние каждого результата поиска совпадения, переданного функции замены, гарантированно остаётся неизменным только на время вызова этой функции и только в том случае, если функция замены не изменяет состояние сопоставителя.
- Примечание по реализации:
- В этой реализации функция замены применяется к данному сопоставителю, являющемуся экземпляром
MatchResult. - Параметры:
-
replacer— функция, применяемая к результату поиска совпадения этим сопоставителем и возвращающая строку замены. - Возвращает:
- Строка, сформированная заменой каждой совпавшей подпоследовательности результатом применения функции замены к этой подпоследовательности с подстановкой захваченных подпоследовательностей при необходимости.
- Исключения:
-
NullPointerException— если функция замены равна null -
ConcurrentModificationException— если удалось обнаружить, приложив все усилия, что функция замены изменила состояние сопоставителя - С версии:
- 9
results
public Stream<MatchResult> results()
Каждый результат сопоставления создается так, как если бы был вызван метод toMatchResult().
Этот метод не сбрасывает данный сопоставитель. Сопоставление начинается при запуске терминальной операции потока — либо с начала области этого сопоставителя, либо, если сопоставитель с тех пор не сбрасывался, с первого символа, не сопоставленного предыдущим поиском.
Если сопоставитель планируется использовать для дальнейших операций сопоставления после завершения терминальной операции потока, его сначала следует сбросить.
Состояние этого сопоставителя не следует изменять во время выполнения конвейера возвращенного потока. Источник возвращенного потока Spliterator является быстро обнаруживающим изменения и, насколько это возможно, выбрасывает исключение ConcurrentModificationException, если обнаружено такое изменение.
- Возвращает:
- последовательный поток результатов сопоставления.
- Начиная с версии:
- 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- Если начало или конец меньше нуля, начало больше длины входной последовательности, конец больше длины входной последовательности либо начало больше конца. - Начиная с версии:
- 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 задает использование прозрачных границ. Если аргумент типа boolean равен false, будут использоваться непрозрачные границы.
При использовании прозрачных границ границы области данного сопоставителя прозрачны для конструкций проверки вперед, проверки назад и проверки границ. Эти конструкции могут проверять символы за пределами области, чтобы определить, подходит ли соответствие.
При использовании непрозрачных границ границы области данного сопоставителя непрозрачны для конструкций проверки вперед, проверки назад и проверки границ, которые могут пытаться проверять символы за их пределами. Эти конструкции не могут заглядывать за границы и поэтому не найдут соответствий вне области.
По умолчанию сопоставитель использует непрозрачные границы.
- Параметры:
-
b- логическое значение, указывающее, следует ли использовать непрозрачные или прозрачные границы области - Возвращает:
- этот сопоставитель
- Начиная с версии:
- 1.5
- См. также:
hasAnchoringBounds
public boolean hasAnchoringBounds()
Этот метод возвращает true, если сопоставитель использует привязывающие границы, и false в противном случае.
Описание привязывающих границ см. в useAnchoringBounds.
По умолчанию сопоставитель использует привязывающие границы области.
- Возвращает:
-
true, если сопоставитель использует привязывающие границы, иначеfalse. - Начиная с версии:
- 1.5
- См. также:
useAnchoringBounds
public Matcher useAnchoringBounds(boolean b)
Вызов этого метода с аргументом true задает использование привязывающих границ. Если аргумент типа boolean равен false, будут использоваться непривязывающие границы.
При использовании привязывающих границ границы области данного сопоставителя соответствуют якорям, таким как ^ и $.
Без привязывающих границ границы области данного сопоставителя не соответствуют якорям, таким как ^ и $.
По умолчанию сопоставитель использует привязывающие границы области.
- Параметры:
-
b- логическое значение, указывающее, следует ли использовать привязывающие границы. - Возвращает:
- этот сопоставитель
- Начиная с версии:
- 1.5
- См. также:
toString
public String toString()
Возвращает строковое представление данного сопоставителя. Строковое представление объекта Matcher содержит информацию, которая может быть полезна при отладке. Точный формат не определен.
hitEnd
public boolean hitEnd()
Возвращает true, если при последней операции сопоставления, выполненной этим сопоставителем, механизм поиска достиг конца входных данных.
Если этот метод возвращает true, то возможно, что дополнительные входные данные изменили бы результат последнего поиска.
- Возвращает:
- true, если при последнем сопоставлении был достигнут конец входных данных; иначе false
- Начиная с версии:
- 1.5
requireEnd
public boolean requireEnd()
Возвращает true, если дополнительные входные данные могут изменить положительное соответствие на отрицательное.
Если этот метод возвращает true и соответствие было найдено, дополнительные входные данные могут привести к тому, что соответствие будет утрачено. Если этот метод возвращает false и соответствие было найдено, дополнительные входные данные могут изменить соответствие, но оно не будет утрачено. Если соответствие не найдено, результат requireEnd не имеет значения.
- Возвращает:
- true, если дополнительные входные данные могут изменить положительное соответствие на отрицательное.
- Начиная с версии:
- 1.5
namedGroups
public Map<String,Integer> namedGroups()
- Определено в:
-
namedGroupsв интерфейсеMatchResult - Возвращает:
- неизменяемое отображение имен захватывающих групп на номера групп
- Начиная с версии:
- 20
hasMatch
public boolean hasMatch()
this действительное соответствие, найденное при предыдущей операции сопоставления или поиска.- Определено в:
-
hasMatchв интерфейсеMatchResult - Возвращает:
- содержит ли
thisдействительное соответствие - Начиная с версии:
- 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.