La clase Java PatternSyntaxException se define en el paquete java.util.regex y representa una excepción no verificada que significa un error de sintaxis en un patrón de expresión regular. Esta clase se puede declarar usando la siguiente sintaxis,
public class PatternSyntaxException extends IllegalArgumentException
PatternSyntaxException::getIndex()
Este método se usa para recuperar el índice del error que se lanza como una excepción. La sintaxis se da a continuación,
Sintaxis:
public int getIndex()
Devuelve: Devuelve un entero no negativo: El índice en el patrón del error es -1 si no se puede recuperar el índice
Ejemplo 1: En este ejemplo, el error está en el índice 0 del patrón. Esto se debe al carácter no cerrado.
Java
// Java program to illustrate the working of getIndex() method import java.io.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; class GFG { private static String regularExpression = "["; private static String input = "GeeksforGeeks " + "is a learning platform."; private static String replace = "Hi"; public static void main (String[] args) { try{ // Compile the pattern Pattern pattern = Pattern.compile(regularExpression); // To get a matcher object Matcher matcher = pattern.matcher(input); input = matcher.replaceAll(replace); } catch(PatternSyntaxException e){ // Print the index in the error of the pattern System.out.println("Index: "+ e.getIndex()); System.out.println("Message: "+ e.getMessage()); } } }
Producción
Index: 0 Message: Unclosed character class near index 0 [ ^
Ejemplo 2: En este ejemplo, el método getIndex() devuelve -1. Esto se debe a que no se puede recuperar el índice debido a una repetición ilegal.
Java
// Java program to illustrate the working of getIndex() method import java.io.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; class GFG { // Declaring a string variable to store the regular expression private static String regularExpression = "{"; private static String input = "GeeksforGeeks " + "is a learning platform."; private static String replace = "Hello"; public static void main (String[] args) { try{ // Compile the pattern Pattern pattern = Pattern.compile(regularExpression); // To get a matcher object Matcher matcher = pattern.matcher(input); input = matcher.replaceAll(replace); } catch(PatternSyntaxException e){ // Print the index in the error of the pattern System.out.println("Index: "+ e.getIndex()); System.out.println("Message: "+ e.getMessage()); } } }
Producción
Index: -1 Message: Illegal repetition {