РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
671 of 1163 menu

Класс PatternSyntaxException

Класс PatternSyntaxException наследуется от класса IllegalArgumentException и представляет собой непроверяемое исключение, которое выбрасывается при обнаружении синтаксической ошибки в шаблоне регулярного выражения. Это исключение возникает в момент компиляции шаблона, например при вызове метода compile класса Pattern или при использовании строковых методов, принимающих регулярное выражение. В первом параметре конструктора передается описание ошибки, во второй параметр - ошибочный шаблон регулярного выражения, в третий - индекс позиции, в которой была обнаружена ошибка.

Синтаксис

public class PatternSyntaxException extends IllegalArgumentException

Основные методы класса:

public String getDescription() public String getPattern() public int getIndex() public String getMessage()

Пример

Давайте попробуем скомпилировать шаблон с незакрытой квадратной скобкой и перехватим возникшее исключение:

import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class Main { public static void main(String[] args) { try { Pattern.compile("[abc"); } catch (PatternSyntaxException e) { System.out.println("Description: " + e.getDescription()); System.out.println("Pattern: " + e.getPattern()); System.out.println("Index: " + e.getIndex()); } } }

Результат выполнения кода:

"Description: Unclosed character class" "Pattern: [abc" "Index: 0"

Пример

Давайте рассмотрим исключение, возникающее при использовании некорректного квантификатора в шаблоне:

import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class Main { public static void main(String[] args) { try { Pattern.compile("abc**"); } catch (PatternSyntaxException e) { System.out.println("Description: " + e.getDescription()); System.out.println("Index: " + e.getIndex()); System.out.println("Message: " + e.getMessage()); } } }

Результат выполнения кода:

"Description: Dangling meta character '*'" "Index: 4" "Message: Dangling meta character '*' near index 4"

Пример

Давайте обработаем исключение при разбиении строки с помощью метода split класса String:

import java.util.regex.PatternSyntaxException; public class Main { public static void main(String[] args) { String str = "abcde"; try { String[] res = str.split("["); System.out.println(res.length); } catch (PatternSyntaxException e) { System.out.println("Error: " + e.getDescription()); } } }

Результат выполнения кода:

"Error: Unclosed character class"

Смотрите также

  • класс Pattern,
    который представляет скомпилированное регулярное выражение
  • метод compile,
    который компилирует регулярное выражение в шаблон
  • метод matches,
    который проверяет соответствие строки шаблону
  • метод split,
    который разбивает строку по регулярному выражению
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить