📜  Java PatternSyntaxException 类 getMessage() 方法和示例

📅  最后修改于: 2022-05-13 01:55:34.782000             🧑  作者: Mango

Java PatternSyntaxException 类 getMessage() 方法和示例

Java提供了正则表达式或正则表达式(简称)API,用于创建字符串模式以在Java中搜索、操作和编辑字符串。此类在Java.util.regex 包下定义,它侧重于表示正则表达式模式中的语法错误的未经检查的异常。可以使用以下语法声明此类,

句法:

public class PatternSyntaxException extends IllegalArgumentException

此类具有以下构造函数:

PatternSyntaxException(String desc, String regex, int index) // It instantiates a new object of this class

PatternSyntaxException getMessage() 方法

此方法返回一个多行字符串,其中包含正则表达式模式中的语法错误及其索引的详细描述,即正则表达式模式中的错误。它还以视觉格式描述了模式中错误索引的指示。可以使用以下语法在 PatternSyntaxException 类的实例化对象上调用此方法。

句法:

error.getMessage()

这里,错误是 PatterSyntaxException 类的对象

返回类型:该方法返回一个多行字符串,即错误的详细描述。

示例 1:在此示例中,我们通过调用 Pattern 类的 compile() 方法定义了一个模式。它接受正则表达式(“[”)作为参数并生成一个模式。然后,我们在 Pattern 类的实例化对象上调用 matcher() 方法。它接受输入作为参数。这将检查输入字符串中的正则表达式(模式)。此外,我们在 matcher 对象上调用了 replaceAll() 方法。这将用给定的替换字符串替换与模式匹配的输入序列的每个子序列。

请注意,我们已将这些语句捆绑在 Try 块中。在这种情况下,它将在正则表达式模式中引发语法错误,并通过 catch 块处理。 catch 块接受 PatternSyntaxException 类的对象,最终,我们调用了该对象的 getMessage() 方法。

Java
// Java program to illustrate the
// working of getMessage() 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 message of the error occurred in
            // the pattern
            System.out.println("Message: "
                               + e.getMessage());
        }
    }
}


Java
// Java program to illustrate the
// working of getMessage() 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 message of the error occurred in
            // the pattern
            System.out.println("Message: "
                               + e.getMessage());
        }
    }
}



输出
Message: Unclosed character class near index 0
[
^

示例 2:在此示例中,我们通过调用 Pattern 类的 compile() 方法定义了一个模式。它接受正则表达式(“{”)作为参数并生成一个模式。然后,我们在 Pattern 类的实例化对象上调用 matcher() 方法。它接受输入作为参数。这将检查输入字符串中的正则表达式(模式)等于“极客”+“是一个学习平台。”。此外,我们在 matcher 对象上调用了 replaceAll() 方法。这将用给定的替换字符串替换与模式匹配的输入序列的每个子序列。

请注意,我们已将这些语句捆绑在 Try 块中。在这种情况下,它将在正则表达式模式中引发语法错误,并通过 catch 块处理。 catch 块接受 PatternSyntaxException 类的对象,最终,我们调用了该对象的 getMessage() 方法。

Java

// Java program to illustrate the
// working of getMessage() 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 message of the error occurred in
            // the pattern
            System.out.println("Message: "
                               + e.getMessage());
        }
    }
}


输出
Message: Illegal repetition
{