MaltParser 1.5 PatternSyntaxException

时间:2015-07-01 18:23:39

标签: java nlp

我需要使用MaltParser 1.5版本来解析俄语句子。 所以,当我尝试输入cmd next命令时:

java -jar malt.jar 

我得到下一个例外:

C:\malt1.5>java -jar malt.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.maltparser.MaltConsoleEngine.<init>(MaltConsoleEngine.java:29)
        at org.maltparser.Malt.main(Malt.java:17)
Caused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 17
^.*malt[^\]*\.jar$
                 ^
        at java.util.regex.Pattern.error(Unknown Source)
        at java.util.regex.Pattern.clazz(Unknown Source)
        at java.util.regex.Pattern.sequence(Unknown Source)
        at java.util.regex.Pattern.expr(Unknown Source)
        at java.util.regex.Pattern.compile(Unknown Source)
        at java.util.regex.Pattern.<init>(Unknown Source)
        at java.util.regex.Pattern.compile(Unknown Source)
        at org.maltparser.core.helper.SystemInfo.<init>(SystemInfo.java:28)
        at org.maltparser.core.helper.SystemInfo.<clinit>(SystemInfo.java:21)
        ... 2 more

我试图用JRE 1.5和1.8.45运行这个命令 - 结果相同。

1 个答案:

答案 0 :(得分:1)

问题似乎是正则表达式的[^\]部分。 [部分启动一个字符类。通常]结束一个字符类,但它引用\],所以你写了一个字符类,其中包含除]*,{之外的所有内容。 {1}},.jar,并且未终止。

如果字符类应该包含除反斜杠之外的所有内容,则它应该是$而不是[^\\]。要将正则表达式编写为Java字符串,您需要额外的引用级别:[^\]。一个引用级别用于正则表达式,另一个级别用于字符串。