Методы 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()); }}В итоге будет получен следующий результат:
Методы класса PatternSyntaxException PatternSyntaxException представляет непроверяемое исключение, которое отображает синтаксическую ошибку в шаблоне регулярного выражения. Класс PatternSyntaxException представлен следующими методами, которые помогут определить вам ошибку.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|