无涯教程-Java 正则 - 模式语法异常

78 阅读1分钟

java.util.regex.PatternSyntaxException类表示抛出的未经检查的异常,以指示正则表达式模式中的语法错误。

类声明

以下是java.util.regex.PatternSyntaxException类的声明

public class PatternSyntaxException
   extends IllegalArgumentException

构造函数

Sr.No Method & Remark
1 PatternSyntaxException(String desc, String regex, int index)

构造此类的新实例。

类方法

Sr.No Method & Remark
1 String getDescription()

检索错误的说明。

2 int getIndex()

检索错误索引。

3 String getMessage()

返回一个多行字符串,其中包含语法错误及其索引的说明、错误的正则表达式模式以及模式内错误索引的可视指示。

4 String getPattern()

检索错误的正则表达式模式。

下面的示例显示java.util.regex.Pattern.PatternSyntaxException类方法的用法。

package com.learnfk;

import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException;

public class PatternSyntaxExceptionDemo { private static String REGEX="["; private static String INPUT="The dog says meow " + "All dogs say meow."; private static String REPLACE="cat";

public static void main(String[] args) { try{ Pattern pattern=Pattern.compile(REGEX);

     </span><span class="com">//获取匹配器对象</span><span class="pln">
     </span><span class="typ">Matcher</span><span class="pln"> matcher</span><span class="pun">=</span><span class="pln">pattern</span><span class="pun">.</span><span class="pln">matcher</span><span class="pun">(</span><span class="pln">INPUT</span><span class="pun">);</span><span class="pln"> 
     INPUT</span><span class="pun">=</span><span class="pln">matcher</span><span class="pun">.</span><span class="pln">replaceAll</span><span class="pun">(</span><span class="pln">REPLACE</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pun">(</span><span class="typ">PatternSyntaxException</span><span class="pln"> e</span><span class="pun">){</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"PatternSyntaxException: "</span><span class="pun">);</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Remark: "</span><span class="pun">+</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">getRemark</span><span class="pun">));</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Index: "</span><span class="pun">+</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">getIndex</span><span class="pun">());</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Message: "</span><span class="pun">+</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">getMessage</span><span class="pun">());</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Pattern: "</span><span class="pun">+</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">getPattern</span><span class="pun">());</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

} }

让无涯教程编译并运行上述程序,这将产生以下输出-

PatternSyntaxException: 
Remark: Unclosed character class
Index: 0
Message: Unclosed character class near index 0
[
^
Pattern: [

参考链接

www.learnfk.com/javaregex/j…