Класс Matcher
- java.lang.Object
-
- java.util.regex.Matcher
- Все реализованные интерфейсы:
MatchResult
public final class Matcher extends Object implements MatchResult
Двигатель, выполняющий операции сопоставления с последовательностью символов с помощью интерпретации Pattern.
Matcher создается из шаблона с помощью вызова метода matcher шаблона. После создания matcher можно использовать для выполнения трёх типов операций сопоставления:
Метод
matchesпытается сопоставить всю входную последовательность с шаблоном.Метод
lookingAtпытается сопоставить входную последовательность, начиная с начала, с шаблоном.Метод
findсканирует входную последовательность в поисках следующей подпоследовательности, которая соответствует шаблону.
Каждый из этих методов возвращает логическое значение, указывающее на успех или неудачу. Дополнительную информацию об успешном сопоставлении можно получить, запросив состояние matcher.
Matcher находит совпадения в подмножестве своего входного значения, называемого областью. По умолчанию область содержит все входные данные matcher. Область может быть изменена с помощью метода region и запрошена с помощью методов regionStart и regionEnd. Способ взаимодействия границ области с некоторыми конструкциями шаблона может быть изменён. Более подробную информацию см. в useAnchoringBounds и useTransparentBounds.
Этот класс также определяет методы для замены соответствующих подпоследовательностей новыми строками, содержимое которых, при необходимости, можно вычислить из результата сопоставления. Методы appendReplacement и appendTail могут быть использованы вместе для сбора результата в существующий буфер строк или билдер строк. В качестве альтернативы, можно использовать более удобный метод replaceAll для создания строки, в которой каждая соответствующая подпоследовательность во входной последовательности заменяется.
Явное состояние matcher включает начальные и конечные индексы последнего успешного совпадения. Он также включает начальные и конечные индексы входной подпоследовательности, захваченной каждой группой захвата в шаблоне, а также общее количество таких подпоследовательностей. Для удобства также предоставлены методы для возвращения этих захваченных подпоследовательностей в виде строк.
Явное состояние matcher поначалу не определено; попытка запросить любую его часть до успешного сопоставления вызовет исключение IllegalStateException. Явное состояние matcher пересчитывается каждой операцией сопоставления.
Неявное состояние matcher включает входную последовательность символов, а также позицию добавления, которая поначалу равна нулю и обновляется методом appendReplacement.
Matcher можно явно сбросить, вызвав его метод reset() или, если требуется новая входная последовательность, его метод reset(CharSequence). Сброс matcher отбрасывает информацию о его явном состоянии и устанавливает позицию добавления в ноль.
Экземпляры этого класса не являются безопасными для использования несколькими параллельными потоками.
- С момента:
- 1.4
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Matcher | appendReplacement(StringBuffer sb,
String replacement) | Реализует нетерминальную стадию добавления и замены. |
Matcher | appendReplacement(StringBuilder sb,
String replacement) | Реализует нетерминальную стадию добавления и замены. |
StringBuffer | appendTail(StringBuffer sb) | Реализует терминальную стадию добавления и замены. |
StringBuilder | appendTail(StringBuilder sb) | Реализует терминальную стадию добавления и замены. |
int | end() | Возвращает смещение после последнего совпавшего символа. |
int | end(int group) | Возвращает смещение после последнего символа подпоследовательности, захваченной заданной группой во время предыдущей операции сопоставления. |
int | end(String name) | Возвращает смещение после последнего символа подпоследовательности, захваченной заданной именованной группой захвата во время предыдущей операции сопоставления. |
boolean | find() | Попытка найти следующую подпоследовательность входной последовательности, которая соответствует шаблону. |
boolean | find(int start) | Сбрасывает этот сопоставитель и затем пытается найти следующую подпоследовательность входной последовательности, которая соответствует шаблону, начиная с указанного индекса. |
String | group() | Возвращает подпоследовательность входных данных, соответствующую предыдущему сопоставлению. |
String | group(int group) | Возвращает подпоследовательность входных данных, захваченную заданной группой во время предыдущей операции сопоставления. |
String | group(String name) | Возвращает подпоследовательность входных данных, захваченную заданной именованной группой захвата во время предыдущей операции сопоставления. |
int | groupCount() | Возвращает количество групп захвата в шаблоне этого сопоставителя. |
boolean | hasAnchoringBounds() | Запрашивает привязку границ области для этого сопоставителя. |
boolean | hasTransparentBounds() | Запрашивает прозрачность границ области для этого сопоставителя. |
boolean | hitEnd() | Возвращает true, если в последней операции сопоставления, выполненной этим сопоставителем, поисковый движок достиг конца входных данных. |
boolean | lookingAt() | Пытается сопоставить входную последовательность, начиная с начала области, с шаблоном. |
boolean | matches() | Пытается сопоставить всю область с шаблоном. |
Pattern | pattern() | Возвращает шаблон, интерпретируемый этим сопоставителем. |
static String | quoteReplacement(String s) | Возвращает литеральное значение замены |
Matcher | region(int start,
int end) | Устанавливает границы области этого сопоставителя. |
int | regionEnd() | Сообщает конечный индекс (исключительно) области этого сопоставителя. |
int | regionStart() | Сообщает начальный индекс области этого сопоставителя. |
String | replaceAll(String replacement) | Заменяет каждую подпоследовательность входной последовательности, которая соответствует шаблону, заданной строкой замены. |
String | replaceAll(Function<MatchResult,String> replacer) | Заменяет каждую подпоследовательность входной последовательности, которая соответствует шаблону, результатом применения данной функции замены к результату сопоставления этого сопоставителя, соответствующему этой подпоследовательности. |
String | replaceFirst(String replacement) | Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, заданной строкой замены. |
String | replaceFirst(Function<MatchResult,String> replacer) | Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, результатом применения данной функции замены к результату сопоставления этого сопоставителя, соответствующему этой подпоследовательности. |
boolean | requireEnd() | Возвращает true, если дополнительные входные данные могут изменить положительное сопоставление на отрицательное. |
Matcher | reset() | Сбрасывает этот сопоставитель. |
Matcher | reset(CharSequence input) | Сбрасывает этот сопоставитель с новой входной последовательностью. |
Stream<MatchResult> | results() | Возвращает поток результатов сопоставления для каждой подпоследовательности входной последовательности, которая соответствует шаблону. |
int | start() | Возвращает начальный индекс предыдущего сопоставления. |
int | start(int group) | Возвращает начальный индекс подпоследовательности, захваченной данной группой во время предыдущей операции сопоставления. |
int | start(String name) | Возвращает начальный индекс подпоследовательности, захваченной заданной именованной группой захвата во время предыдущей операции сопоставления. |
MatchResult | toMatchResult() | Возвращает состояние сопоставления этого сопоставителя как |
String | toString() | Возвращает строковое представление этого сопоставителя. |
Matcher | useAnchoringBounds(boolean b) | Устанавливает привязку границ области для этого сопоставителя. |
Matcher | usePattern(Pattern newPattern) | Изменяет |
Matcher | useTransparentBounds(boolean b) | Устанавливает прозрачность границ области для этого сопоставителя. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы
pattern
public Pattern pattern()
Возвращает шаблон, интерпретируемый этим совпадением.
- Возвращает:
- Шаблон, для которого был создан этот объект совпадения
toMatchResult
public MatchResult toMatchResult()
Возвращает состояние совпадения этого объекта совпадения в виде MatchResult. Результат не зависит от последующих операций, выполняемых над этим объектом совпадения.
- Возвращает:
- объект
MatchResultсо статусом этого объекта совпадения - С момента:
- 1.5
usePattern
public Matcher usePattern(Pattern newPattern)
Изменяет 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)
Возвращает начальный индекс подпоследовательности, захваченной заданной именованной группой захвата во время предыдущей операции совпадения.
- Параметры:
-
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()
Возвращает количество групп захвата в шаблоне этого объекта совпадения.
Группа ноль обозначает весь шаблон по соглашению. Она не включена в этот подсчёт.
Любое целое число, меньшее или равное возвращаемому методом значению, гарантированно является допустимым индексом группы для этого объекта совпадения.
- Указано в:
-
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());
- Параметры:
-
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-".
Вызов этого метода изменяет состояние этого матчера. Если матчер должен использоваться в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
- Parameters:
-
replacement- Строка замены - Returns:
- Строка, построенная путем замены каждой соответствующей подпоследовательности строкой замены, заменяя при необходимости захваченные подпоследовательности.
replaceAll
public String replaceAll(Function<MatchResult,String> replacer)
Заменяет каждую подпоследовательность входной последовательности, которая соответствует шаблону, результатом применения заданной функции замены к результату совпадения этого матчера, соответствующему данной подпоследовательности. Исключение, брошенное функцией, передается вызывающей стороне.
Этот метод сначала сбрасывает этот матчер. Затем он сканирует входную последовательность, ища совпадения шаблону. Символы, не являющиеся частью совпадения, добавляются непосредственно в строку результата; каждое совпадение заменяется в результате применением функции замены, которая возвращает строку замены. Каждая строка замены может содержать ссылки на захваченные подпоследовательности, как в методе appendReplacement.
Обратите внимание, что обратные слэши (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, если бы она обрабатывалась как строка замены буквально. Знаки доллара могут обрабатываться как ссылки на захваченные подпоследовательности, как описано выше, а обратные слэши используются для экранирования символов в строке замены.
При использовании регулярного выражения dog, входной последовательности mr -> mr.group().toUpperCase(), и функции "zzzdogzzzdogzzz", вызов этого метода для матчера этого выражения вернул бы строку "zzzDOGzzzDOGzzz".
Вызов этого метода изменяет состояние этого матчера. Если матчер должен использоваться в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
Функция замены не должна изменять состояние этого матчера во время замены. Этот метод будет, с наилучшими усилиями, выбрасывать ConcurrentModificationException, если такое изменение будет обнаружено.
Состояние каждого результата совпадения, переданного функции замены, гарантируется как постоянное только на время вызова функции замены и только если функция замены не изменяет состояние этого матчера.
- Implementation Note:
- Эта реализация применяет функцию замены к этому матчеру, который является экземпляром
MatchResult. - Parameters:
-
replacer- Функция, которая применяется к результату совпадения этого матчера, которая возвращает строку замены. - Returns:
- Строка, построенная путем замены каждой соответствующей подпоследовательности результатом применения функции замены к этой подпоследовательности, заменяя при необходимости захваченные подпоследовательности.
- Throws:
-
NullPointerException- если функция замены равна null -
ConcurrentModificationException- если с наилучшими усилиями обнаружено, что функция замены изменила состояние этого матчера - Since:
- 9
results
public Stream<MatchResult> results()
Возвращает поток результатов совпадений для каждой подпоследовательности входной последовательности, которая соответствует шаблону. Результаты совпадений появляются в том же порядке, что и соответствующие подпоследовательности во входной последовательности.
Каждый результат совпадения создается так, как если бы он был получен из toMatchResult().
Этот метод не сбрасывает этот матчер. Сопоставление начинается при запуске терминальной операции потока либо в начале области этого матчера, либо, если матчер не был сброшен, в первом символе, не соответствующем предыдущему совпадению.
Если матчер должен быть использован для дальнейших операций сопоставления после завершения терминальной операции потока, то он должен быть сброшен.
Состояние этого матчера не должно изменяться во время выполнения потока возвращаемого потока. Источник возвращаемого потока Spliterator является *немедленно-быстрым* и будет, с наилучшими усилиями, выбрасывать ConcurrentModificationException, если такое изменение будет обнаружено.
- Returns:
- последовательный поток результатов совпадений.
- Since:
- 9
replaceFirst
public String replaceFirst(String replacement)
Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, заданной строкой замены.
Этот метод сначала сбрасывает этот матчер. Затем он сканирует входную последовательность, ища совпадение шаблону. Символы, не являющиеся частью совпадения, добавляются непосредственно в строку результата; совпадение заменяется в результате строкой замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как в методе appendReplacement.
Обратите внимание, что обратные слэши (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, если бы она обрабатывалась как строка замены буквально. Знаки доллара могут обрабатываться как ссылки на захваченные подпоследовательности, как описано выше, а обратные слэши используются для экранирования символов в строке замены.
При использовании регулярного выражения dog, входной последовательности "zzzdogzzzdogzzz", и строке замены "cat", вызов этого метода для матчера этого выражения вернул бы строку "zzzcatzzzdogzzz".
Вызов этого метода изменяет состояние этого матчера. Если матчер должен использоваться в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
- Parameters:
-
replacement- Строка замены - Returns:
- Строка, построенная путем замены первого соответствующего подпоследовательности строкой замены, заменяя при необходимости захваченные подпоследовательности.
replaceFirst
public String replaceFirst(Function<MatchResult,String> replacer)
Заменяет первую подпоследовательность входной последовательности, которая соответствует шаблону, результатом применения заданной функции замены к результату совпадения этого матчера, соответствующему данной подпоследовательности. Исключение, брошенное функцией, передается вызывающей стороне.
Этот метод сначала сбрасывает этот матчер. Затем он сканирует входную последовательность, ища совпадение шаблону. Символы, не являющиеся частью совпадения, добавляются непосредственно в строку результата; совпадение заменяется в результате применением функции замены, которая возвращает строку замены. Строка замены может содержать ссылки на захваченные подпоследовательности, как в методе appendReplacement.
Обратите внимание, что обратные слэши (\) и знаки доллара ($) в строке замены могут привести к результатам, отличным от тех, если бы она обрабатывалась как строка замены буквально. Знаки доллара могут обрабатываться как ссылки на захваченные подпоследовательности, как описано выше, а обратные слэши используются для экранирования символов в строке замены.
При использовании регулярного выражения dog, входной последовательности "zzzdogzzzdogzzz", и функции mr -> mr.group().toUpperCase(), вызов этого метода для матчера этого выражения вернул бы строку "zzzDOGzzzdogzzz".
Вызов этого метода изменяет состояние этого матчера. Если матчер должен использоваться в дальнейших операциях сопоставления, то он должен быть сначала сброшен.
Функция замены не должна изменять состояние этого матчера во время замены. Этот метод будет, с наилучшими усилиями, выбрасывать ConcurrentModificationException, если такое изменение будет обнаружено.
Состояние результата совпадения, переданного функции замены, гарантируется как постоянное только на время вызова функции замены и только если функция замены не изменяет состояние этого матчера.
- Implementation Note:
- Эта реализация применяет функцию замены к этому матчеру, который является экземпляром
MatchResult. - Parameters:
-
replacer- Функция, которая применяется к результату совпадения этого матчера, которая возвращает строку замены. - Returns:
- Строка, построенная путем замены первого соответствующего подпоследовательности результатом применения функции замены к этой подпоследовательности, заменяя при необходимости захваченные подпоследовательности.
- Throws:
-
NullPointerException- если функция замены равна null -
ConcurrentModificationException- если с наилучшими усилиями обнаружено, что функция замены изменила состояние этого матчера - Since:
- 9
region
public Matcher region(int start,
int end) Устанавливает границы области поиска этого матчера. Область - часть входной последовательности, в которой будет производиться поиск совпадения. Вызов этого метода сбрасывает матчер и устанавливает область, начинающуюся с индекса, указанного параметром start, и заканчивающуюся индексом, указанным параметром end.
В зависимости от используемой прозрачности и привязки (см. useTransparentBounds и useAnchoringBounds), некоторые конструкции, такие как якоря, могут вести себя по-разному в или около границ области.
- Parameters:
-
start- Индекс начала поиска (включительно) -
end- Индекс окончания поиска (исключительно) - Returns:
- этот матчер
- Throws:
-
IndexOutOfBoundsException- Если start или end меньше нуля, если start больше длины входной последовательности, если end больше длины входной последовательности или если start больше end. - Since:
- 1.5
regionStart
public int regionStart()
Сообщает начальный индекс области этого сопоставителя. Поиски, выполняемые этим сопоставителем, ограничены нахождением совпадений в пределах regionStart (включительно) и regionEnd (исключительно).
- Возвращает:
- Начальная точка области этого сопоставителя
- С:
- 1.5
regionEnd
public int regionEnd()
Сообщает конечный индекс (исключительно) области этого сопоставителя. Поиски, выполняемые этим сопоставителем, ограничены нахождением совпадений в пределах regionStart (включительно) и regionEnd (исключительно).
- Возвращает:
- конечная точка области этого сопоставителя
- С:
- 1.5
hasTransparentBounds
public boolean hasTransparentBounds()
Запрашивает прозрачность границ области для этого сопоставителя.
Этот метод возвращает true если этот сопоставитель использует прозрачные границы, false если он использует непрозрачные границы.
См. useTransparentBounds для описания прозрачных и непрозрачных границ.
По умолчанию сопоставитель использует непрозрачные границы области.
- Возвращает:
-
trueесли этот сопоставитель использует прозрачные границы,falseв противном случае. - С:
- 1.5
- См. также:
useTransparentBounds(boolean)
useTransparentBounds
public Matcher useTransparentBounds(boolean b)
Устанавливает прозрачность границ области для этого сопоставителя.
Вызов этого метода со значением аргумента true установит для этого сопоставителя использование прозрачных границ. Если логическое значение аргумента равно false, то будут использоваться непрозрачные границы.
Используя прозрачные границы, границы области этого сопоставителя прозрачны для конструкций с опережающим и обратным просмотром, а также для сопоставления границ. Эти конструкции могут видеть за пределами границ области, чтобы определить, соответствует ли совпадение.
Используя непрозрачные границы, границы области этого сопоставителя непрозрачны для конструкций с опережающим и обратным просмотром, а также для сопоставления границ, которые могут пытаться видеть за их пределами. Эти конструкции не могут смотреть за пределы границ, поэтому они не смогут найти совпадение за пределами области.
По умолчанию сопоставитель использует непрозрачные границы.
- Параметры:
-
b- логическое значение, указывающее, использовать ли непрозрачную или прозрачную область - Возвращает:
- этот сопоставитель
- С:
- 1.5
- См. также:
hasTransparentBounds()
hasAnchoringBounds
public boolean hasAnchoringBounds()
Запрашивает привязывание границ области для этого сопоставителя.
Этот метод возвращает true если этот сопоставитель использует привязанные границы, false в противном случае.
См. useAnchoringBounds для описания привязанных границ.
По умолчанию сопоставитель использует привязанные границы области.
- Возвращает:
-
trueесли этот сопоставитель использует привязанные границы,falseв противном случае. - С:
- 1.5
- См. также:
useAnchoringBounds(boolean)
useAnchoringBounds
public Matcher useAnchoringBounds(boolean b)
Устанавливает привязывание границ области для этого сопоставителя.
Вызов этого метода со значением аргумента true установит для этого сопоставителя использование привязанных границ. Если логическое значение аргумента равно false, то будут использоваться непривязанные границы.
Используя привязанные границы, границы области этого сопоставителя соответствуют якорям, таким как ^ и $.
Без привязанных границ, границы области этого сопоставителя не будут соответствовать якорям, таким как ^ и $.
По умолчанию сопоставитель использует привязанные границы области.
- Параметры:
-
b- логическое значение, указывающее, использовать ли привязанные границы. - Возвращает:
- этот сопоставитель
- С:
- 1.5
- См. также:
hasAnchoringBounds()
toString
public String toString()
Возвращает строковое представление этого сопоставителя. Строковое представление Matcher содержит информацию, которая может быть полезна для отладки. Точный формат не определен.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- Строковое представление этого сопоставителя
- С:
- 1.5
hitEnd
public boolean hitEnd()
Возвращает true, если в последней операции поиска, выполненной этим сопоставителем, движок поиска достиг конца входных данных.
Когда этот метод возвращает true, то возможно, что дополнительные входные данные изменили бы результат последнего поиска.
- Возвращает:
- true, если в последнем поиске был достигнут конец входных данных; в противном случае false
- С:
- 1.5
requireEnd
public boolean requireEnd()
Возвращает true, если дополнительные входные данные могут изменить положительное совпадение на отрицательное.
Если этот метод возвращает true, и совпадение было найдено, то дополнительные входные данные могут привести к потере совпадения. Если этот метод возвращает false, и совпадение было найдено, то дополнительные входные данные могут изменить совпадение, но совпадение не будет потеряно. Если совпадение не было найдено, то requireEnd не имеет значения.
- Возвращает:
- true, если дополнительные входные данные могут изменить положительное совпадение на отрицательное.
- С:
- 1.5
© 1993, 2020, 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/11/docs/api/java.base/java/util/regex/Matcher.html