Open In App

Java PatternSyntaxException Class getIndex() Method with Examples

Last Updated : 02 Feb, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Java PatternSyntaxException Class is defined under the java.util.regex package and it depicts unchecked exception that signifies syntax error in a regular expression pattern. This class can be declared using the below syntax,

public class PatternSyntaxException extends IllegalArgumentException

PatternSyntaxException::getIndex()

This method is used to retrieve the index of the error which is thrown as an exception. The syntax is given below,

Syntax:

public int getIndex()

Returns: It returns a non-negative integer: The index in the pattern of the error is -1 if the index cannot be retrieved

Example 1: In this example, the error is at the index 0 in the pattern. This is because of the unclosed character.  

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());
      }
    }
}


Output

Index: 0
Message: Unclosed character class near index 0
[
^

Example 2: In this example, getIndex() method returns -1. This is because of illegal repetition the index cannot be retrieved. 

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());
      }
    }
}


Output

Index: -1
Message: Illegal repetition
{


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads