Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Методы start и end. Методы matches и lookingAt. Методы replaceFirst и replaceAll. Методы appendReplacement и appendTail. Методы класса PatternSyntaxException




Методы start и end

Далее представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово " кот".

import java. util. regex. Matcher; import java. util. regex. Pattern; public class RegexMatches { private static final String REGEX = " \\bкот\\b"; private static final String INPUT = " кот кот кот котёл кот"; public static void main( String args[] ) { Pattern p = Pattern. compile(REGEX); Matcher m = p. matcher(INPUT); // получение matcher объекта int count = 0; while(m. find()) {    count++;     System. out. println(" Номер вхождения: " +count);     System. out. println(" Начальная позиция вхождения: " +m. start());     System. out. println(" Конечная позиция вхождения: " +m. end()); } }}

В итоге будет получен следующий результат:

Номер вхождения: 1Начальная позиция вхождения: 0Конечная позиция вхождения: 3Номер вхождения: 2Начальная позиция вхождения: 4Конечная позиция вхождения: 7Номер вхождения: 3Начальная позиция вхождения: 8Конечная позиция вхождения: 11Номер вхождения: 4Начальная позиция вхождения: 18Конечная позиция вхождения: 21

Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы " c" " a" " t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.

Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.

Методы matches и lookingAt

Оба метода matches и lookingAt направлены на попытку поиска соответствия вводимой последовательности с шаблоном. Разница, однако, заключается в том, что для метода matches требуется вся вводимая последовательность, в то время как lookingAt этого не требует.

Оба метода всегда начинаются в начале вводимой строки. Далее представлен пример, рассматривающий их функциональность.

import java. util. regex. Matcher; import java. util. regex. Pattern; public class RegexMatches { private static final String REGEX = " Pro"; private static final String INPUT = " ProgLang"; private static Pattern pattern; private static Matcher matcher; public static void main( String args[] ) { pattern = Pattern. compile(REGEX); matcher = pattern. matcher(INPUT); System. out. println(" Текущее регулярное выражение: " + REGEX); System. out. println(" Текущие входные данные: " + INPUT); System. out. println(" lookingAt(): " + matcher. lookingAt()); System. out. println(" matches(): " + matcher. matches()); }}

В итоге будет получен следующий результат:

Текущее регулярное выражение: ProТекущие входные данные: ProgLanglookingAt(): truematches(): false

Методы replaceFirst и replaceAll

Методы replaceFirst и replaceAll производят замену текста, который совпадает с заданным регулярным выражением. Исходя из их названия, replaceFirst производит замену первого совпадения, а replaceAll производит замену остальных совпадений.

Далее представлен пример, поясняющий их функциональность.

import java. util. regex. Matcher; import java. util. regex. Pattern; public class RegexMatches { private static String REGEX = " Собака"; private static String INPUT = " Собака говорит мяу. "; private static String REPLACE = " Кот"; public static void main(String[] args) { Pattern p = Pattern. compile(REGEX);       // получение matcher объекта Matcher m = p. matcher(INPUT);       INPUT = m. replaceAll(REPLACE); System. out. println(INPUT); }}

В итоге будет получен следующий результат:

Кот говорит мяу.

Методы appendReplacement и appendTail

Класс Matcher также предоставляет методы замены текста appendReplacement и appendTail.

Далее представлен пример, поясняющий их функциональность.

import java. util. regex. Matcher; import java. util. regex. Pattern; public class RegexMatches { private static String REGEX = " а*д"; private static String INPUT = " аадProgLangааадProgLangадProgLangд"; private static String REPLACE = " -"; public static void main(String[] args) { Pattern p = Pattern. compile(REGEX);       // получение matcher объекта  Matcher m = p. matcher(INPUT); StringBuffer sb = new StringBuffer(); while(m. find()) {    m. appendReplacement(sb, REPLACE); } m. appendTail(sb); System. out. println(sb. toString()); }}

В итоге будет получен следующий результат:

-ProgLang-ProgLang-ProgLang-

Методы класса PatternSyntaxException

PatternSyntaxException представляет непроверяемое исключение, которое отображает синтаксическую ошибку в шаблоне регулярного выражения. Класс PatternSyntaxException представлен следующими методами, которые помогут определить вам ошибку.

№. Метод и описание
public String getDescription() Представляет описание ошибки.
public int getIndex() Представляет индекс ошибки.
public String getPattern() Представляет шаблон регулярного выражения, содержащего ошибку.
public String getMessage() Производит возврат многострочной строки, содержащей описание синтаксической ошибки и ее индекс, ошибочный образец регулярного выражения, а также визуальную индикацию индекса ошибки в шаблоне.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...