Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class Matcher extends Object implements MatchResult
символьная последовательность
интерпретируя a 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 отбрасывает свою явную информацию о состоянии и устанавливает добавлять позицию, чтобы обнулить.
Экземпляры этого класса не безопасны для использования многократными параллельными потоками.
Модификатор и Тип | Метод и Описание |
---|---|
Matcher |
appendReplacement(StringBuffer sb, String replacement)
Реализует нетерминальный шаг добавлять-и-заменять.
|
StringBuffer |
appendTail(StringBuffer sb)
Реализует терминальный шаг добавлять-и-заменять.
|
int |
end()
Возвращает смещение после соответствующего последнего знака.
|
int |
end(int group)
Возвращает смещение после последнего знака подпоследовательности, полученной данной группой во время предыдущей работы соответствия.
|
boolean |
find()
Попытки найти следующую подпоследовательность входной последовательности, которая соответствует образец.
|
boolean |
find(int start)
Сбросы этот matcher и затем пытается найти следующую подпоследовательность входной последовательности, которая соответствует образец, запускающийся по указанному индексу.
|
Строка |
group()
Возвращает входную подпоследовательность, соответствующую предыдущим соответствием.
|
Строка |
group(int group)
Возвращает входную подпоследовательность, полученную данной группой во время предыдущей работы соответствия.
|
Строка |
group(String name)
Возвращает входную подпоследовательность, полученную данной именованной группой фиксации во время предыдущей работы соответствия.
|
int |
groupCount()
Возвращает число групп фиксации в образце этого matcher.
|
boolean |
hasAnchoringBounds()
Запрашивает привязку границ области для этого matcher.
|
boolean |
hasTransparentBounds()
Запрашивает прозрачность границ области для этого matcher.
|
boolean |
hitEnd()
Возвращает true, если конец ввода был поражен поисковой системой в последней работе соответствия, выполняемой этим matcher.
|
boolean |
lookingAt()
Попытки соответствовать входную последовательность, запускающуюся в начале области, против образца.
|
boolean |
matches()
Попытки соответствовать всю область против образца.
|
Образец |
pattern()
Возвращает образец, который интерпретируется этим matcher.
|
static String |
quoteReplacement(String s)
Возвращает литеральную замену
String для указанного String . |
Matcher |
region(int start, int end)
Устанавливает пределы области этого matcher.
|
int |
regionEnd()
Сообщает индекс конца (монопольный) из области этого matcher.
|
int |
regionStart()
Сообщает индекс запуска области этого matcher.
|
Строка |
replaceAll(String replacement)
Заменяет каждую подпоследовательность входной последовательности, которая соответствует образец с данной заменяющей строкой.
|
Строка |
replaceFirst(String replacement)
Заменяет первую подпоследовательность входной последовательности, которая соответствует образец с данной заменяющей строкой.
|
boolean |
requireEnd()
Возвращает true, если более ввод мог бы изменить положительное соответствие в отрицательный.
|
Matcher |
reset()
Сбросы этот matcher.
|
Matcher |
reset(CharSequence input)
Сбросы этот matcher с новой входной последовательностью.
|
int |
start()
Возвращает индекс запуска предыдущего соответствия.
|
int |
start(int group)
Возвращает индекс запуска подпоследовательности, полученной данной группой во время предыдущей работы соответствия.
|
MatchResult |
toMatchResult()
Возвращает состояние соответствия этого matcher как a
MatchResult . |
Строка |
toString()
Возвращает строковое представление этого matcher.
|
Matcher |
useAnchoringBounds(boolean b)
Устанавливает привязку границ области для этого matcher.
|
Matcher |
usePattern(Pattern newPattern)
Изменяет Pattern что этот Matcher использование, чтобы найти соответствия с.
|
Matcher |
useTransparentBounds(boolean b)
Устанавливает прозрачность границ области для этого matcher.
|
public Pattern pattern()
public MatchResult toMatchResult()
MatchResult
. Результат незатронут последующими операциями, выполняемыми на этот matcher.MatchResult
с состоянием этого matcherpublic Matcher usePattern(Pattern newPattern)
Этот метод заставляет этот matcher терять информацию о группах последнего соответствия, которое произошло. Позиция matcher во вводе сохраняется, и ее последние добавляют позицию, незатронуто.
newPattern
- Новый образец используется этим matcherIllegalArgumentException
- Если newPattern является nullpublic Matcher reset()
Сброс matcher отбрасывает всю свою явную информацию о состоянии и устанавливает его добавлять позицию, чтобы обнулить. Область matcher устанавливается в область по умолчанию, которая является ее всей символьной последовательностью. Привязка и прозрачность границ области этого matcher незатронуты.
public Matcher reset(CharSequence input)
Сброс matcher отбрасывает всю свою явную информацию о состоянии и устанавливает его добавлять позицию, чтобы обнулить. Область matcher устанавливается в область по умолчанию, которая является ее всей символьной последовательностью. Привязка и прозрачность границ области этого matcher незатронуты.
input
- Новая входная последовательность символаpublic int start()
start
в интерфейсе MatchResult
IllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияpublic int start(int group)
Группы фиксации индексируются слева направо, запускаясь в одном. Групповой нуль обозначает весь образец, таким образом, выражение м. start(0) эквивалентно м. start().
start
в интерфейсе MatchResult
group
- Индекс группы фиксации в образце этого matcherIllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияIndexOutOfBoundsException
- Если нет никакой группы фиксации в образце с данным индексомpublic int end()
end
в интерфейсе MatchResult
IllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияpublic int end(int group)
Группы фиксации индексируются слева направо, запускаясь в одном. Групповой нуль обозначает весь образец, таким образом, выражение м. end(0) эквивалентно м. end().
end
в интерфейсе MatchResult
group
- Индекс группы фиксации в образце этого matcherIllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияIndexOutOfBoundsException
- Если нет никакой группы фиксации в образце с данным индексомpublic String group()
Для matcher м. с входной последовательностью s, выражения м. group() и s. substring( м. start(), м. end()) эквивалентен.
Отметьте, что некоторые образцы, например a*, соответствуют пустую строку. Этот метод возвратит пустую строку, когда образец успешно будет соответствовать пустую строку во вводе.
group
в интерфейсе MatchResult
IllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияpublic String group(int group)
Для matcher м. входная последовательность s, и группа индексируют г, выражения м. group( g) и s. substring( м. start( g), м. end( g)) эквивалентен.
Группы фиксации индексируются слева направо, запускаясь в одном. Групповой нуль обозначает весь образец, таким образом, выражение m.group(0) эквивалентно m.group().
Если соответствие было успешно, но определенная группа была не в состоянии соответствовать любую часть входной последовательности, то null возвращается. Отметьте, что некоторые группы, например (a*), соответствуют пустую строку. Этот метод возвратит пустую строку, когда такая группа успешно будет соответствовать пустую строку во вводе.
group
в интерфейсе MatchResult
group
- Индекс группы фиксации в образце этого matcherIllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияIndexOutOfBoundsException
- Если нет никакой группы фиксации в образце с данным индексомpublic String group(String name)
Если соответствие было успешно, но определенная группа была не в состоянии соответствовать любую часть входной последовательности, то null возвращается. Отметьте, что некоторые группы, например (a*), соответствуют пустую строку. Этот метод возвратит пустую строку, когда такая группа успешно будет соответствовать пустую строку во вводе.
name
- Имя именованной группы фиксации в образце этого matcherIllegalStateException
- Если никакое соответствие еще не было предпринято, или если предыдущая отказавшая работа соответствияIllegalArgumentException
- Если нет никакой группы фиксации в образце с именемpublic int groupCount()
Групповой нуль обозначает весь образец условно. Это не включается в это количество.
Любое неотрицательное целое число, меньшее чем или равный значению, возвращенному этим методом, как гарантируют, будет допустимым групповым индексом для этого matcher.
groupCount
в интерфейсе MatchResult
public boolean matches()
Если соответствие успешно выполняется тогда, больше информации может быть получено через start, end, и методы group.
public boolean find()
Этот метод запускается в начале области этого matcher, или, если предыдущий вызов метода был успешен, и matcher не был с тех пор сброшен в первом символе, не соответствующем предыдущим соответствием.
Если соответствие успешно выполняется тогда, больше информации может быть получено через start, end, и методы group.
public boolean find(int start)
Если соответствие успешно выполняется тогда, больше информации может быть получено через start, end, и методы group, и последующие вызовы find()
метод запустится в первом символе, не соответствующем этим соответствием.
IndexOutOfBoundsException
- Если запуск является меньше чем нуль или если запуск больше чем длина входной последовательности.public boolean lookingAt()
Как matches
метод, этот метод всегда запускается в начале области; в отличие от того метода, это не требует, чтобы вся область была соответствующей.
Если соответствие успешно выполняется тогда, больше информации может быть получено через start, end, и методы group.
public static String quoteReplacement(String s)
String
для указанного String
. Этот метод производит a String
это будет работать литеральной заменой s
в appendReplacement
метод Matcher
класс. String
произведенный будет соответствовать последовательность символов в s
обработанный как литеральная последовательность. Наклонным чертам (' \') и знаки доллара (' $ ') не дадут особого значения.s
- Строка, чтобы быть literalizedpublic Matcher appendReplacement(StringBuffer sb, String replacement)
Этот метод выполняет следующие действия:
Это читает символы из входной последовательности, запускающейся в добавлять позиции, и добавляет их к данному строковому буферу. Это останавливается после чтения последнего знака, предшествующего предыдущему соответствию, то есть, символу по индексу start()
- 1.
Это добавляет данную заменяющую строку к строковому буферу.
Это устанавливает добавлять позицию этого matcher к индексу соответствующего последнего знака, плюс один, то есть, к end()
.
Заменяющая строка может содержать ссылки на подпоследовательности, полученные во время предыдущего соответствия: Каждое возникновение ${ name} или г $ будет заменено результатом оценки соответствия group(name)
или group(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
- Если заменяющая строка обращается к группе фиксации, которая не существует в образцеpublic StringBuffer appendTail(StringBuffer sb)
Этот метод читает символы из входной последовательности, запускающейся в добавлять позиции, и добавляет их к данному строковому буферу. Это предназначается, чтобы быть вызванным после одного или более вызовов appendReplacement
метод, чтобы скопировать остаток от входной последовательности.
sb
- Целевой строковый буферpublic String replaceAll(String replacement)
Этот метод первые сбросы этот matcher. Это тогда сканирует входную последовательность, ища соответствия образца. Символы, которые не являются частью любого соответствия, добавляются непосредственно к строке результата; каждое соответствие заменяется в результате заменяющей строкой. Заменяющая строка может содержать ссылки на полученные подпоследовательности как в appendReplacement
метод.
Отметьте, что наклонные черты влево (\) и знаки доллара ($) в заменяющей строке могут вызвать результаты отличаться, чем если бы это обрабатывалось как литеральная заменяющая строка. Знаки доллара могут быть обработаны как ссылки на полученные подпоследовательности как описано выше, и наклонные черты влево используются, чтобы выйти из литеральных символов в заменяющей строке.
Учитывая регулярное выражение a*b, ввод "aabfooaabfooabfoob", и замена представляют в виде строки "-", вызов этого метода на matcher для того выражения привел бы к строке "-foo-foo-foo-".
Вызов этого метода изменяет состояние этого matcher. Если matcher должен использоваться в дальнейших операциях соответствия тогда, он должен сначала быть сброшен.
replacement
- Заменяющая строкаpublic String replaceFirst(String replacement)
Этот метод первые сбросы этот matcher. Это тогда сканирует входную последовательность, ища соответствие образца. Символы, которые не являются частью соответствия, добавляются непосредственно к строке результата; соответствие заменяется в результате заменяющей строкой. Заменяющая строка может содержать ссылки на полученные подпоследовательности как в appendReplacement
метод.
Отметьте, что наклонные черты влево (\) и знаки доллара ($) в заменяющей строке могут вызвать результаты отличаться, чем если бы это обрабатывалось как литеральная заменяющая строка. Знаки доллара могут быть обработаны как ссылки на полученные подпоследовательности как описано выше, и наклонные черты влево используются, чтобы выйти из литеральных символов в заменяющей строке.
Учитывая регулярное выражение dog, ввод "zzzdogzzzdogzzz", и замена представляют в виде строки "cat", вызов этого метода на matcher для того выражения привел бы к строке "zzzcatzzzdogzzz".
Вызов этого метода изменяет состояние этого matcher. Если matcher должен использоваться в дальнейших операциях соответствия тогда, он должен сначала быть сброшен.
replacement
- Заменяющая строкаpublic Matcher region(int start, int end)
start
параметр и конец по индексу, определенному end
параметр. В зависимости от прозрачности и привязывающий используемый (см. useTransparentBounds
и useAnchoringBounds
), определенные конструкции, такие как привязки могут вести себя по-другому в или вокруг границ области.
start
- Индекс, чтобы начать искать во (включительно)end
- Индекс, чтобы закончить поиск в (монопольном)IndexOutOfBoundsException
- Если запускаются, или конец является меньше чем нуль, если запуск больше чем длина входной последовательности, если конец больше чем длина входной последовательности, или если запуск больше чем конец.public int regionStart()
regionStart
(включительно) и regionEnd
(монопольный).public int regionEnd()
regionStart
(включительно) и regionEnd
(монопольный).public boolean hasTransparentBounds()
Этот метод возвращает true, если этот matcher использует прозрачные границы, false, если это использует непрозрачные границы.
См. useTransparentBounds
для описания прозрачных и непрозрачных границ.
По умолчанию matcher использует непрозрачные границы области.
useTransparentBounds(boolean)
public Matcher useTransparentBounds(boolean b)
Вызов этого метода с параметром true установит этот matcher, чтобы использовать прозрачные границы. Если булевым параметром будет false, то непрозрачные границы будут использоваться.
Используя прозрачные границы, границы области этого matcher прозрачны к предвидению, lookbehind, и граничным конструкциям соответствия. Те конструкции могут видеть вне границ области, чтобы видеть, является ли соответствие соответствующим.
Используя непрозрачные границы, границы области этого matcher непрозрачны к предвидению, lookbehind, и граничным конструкциям соответствия, которые могут попытаться видеть вне их. Те конструкции не могут смотреть мимо границ, таким образом, они будут не в состоянии соответствовать что-либо за пределами области.
По умолчанию matcher использует непрозрачные границы.
b
- булевская переменная, указывающая, использовать ли непрозрачные или прозрачные областиhasTransparentBounds()
public boolean hasAnchoringBounds()
Этот метод возвращает true если этот matcher использование, привязывающее границы, false иначе.
См. useAnchoringBounds
для описания привязки границ.
По умолчанию matcher использует границы области привязки.
useAnchoringBounds(boolean)
public Matcher useAnchoringBounds(boolean b)
Вызов этого метода с параметром true установит этот matcher, чтобы использовать границы привязки. Если булевым параметром будет false, то непривязка границ будет использоваться.
Используя привязку границ, границы области этого matcher соответствуют привязки, такие как ^ и $.
Не привязывая границы, границы области этого matcher не будут соответствовать привязки, такие как ^ и $.
По умолчанию matcher использует границы области привязки.
b
- булевская переменная, указывающая, использовать ли границы привязки.hasAnchoringBounds()
public String toString()
Возвращает строковое представление этого matcher. Строковое представление a Matcher
содержит информацию, которая может быть полезной для отладки. Точный формат является неуказанным.
public boolean hitEnd()
Возвращает true, если конец ввода был поражен поисковой системой в последней работе соответствия, выполняемой этим matcher.
Когда этот метод возвращает true, тогда возможно, что более ввод изменил бы результат последнего поиска.
public boolean requireEnd()
Возвращает true, если более ввод мог бы изменить положительное соответствие в отрицательный.
Если этот метод возвращает true, и соответствие было найдено, то более ввод мог заставить соответствие быть потерянным. Если этот метод возвращает false, и соответствие было найдено, то более ввод мог бы изменить соответствие, но соответствие не будет потеряно. Если соответствие не было найдено, то у requireEnd нет никакого значения.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.