我需要使用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运行这个命令 - 结果相同。
答案 0 :(得分:1)
问题似乎是正则表达式的[^\]
部分。 [
部分启动一个字符类。通常]
结束一个字符类,但它引用\]
,所以你写了一个字符类,其中包含除]
,*
,{之外的所有内容。 {1}},.
,j
,a
,r
,并且未终止。
如果字符类应该包含除反斜杠之外的所有内容,则它应该是$
而不是[^\\]
。要将正则表达式编写为Java字符串,您需要额外的引用级别:[^\]
。一个引用级别用于正则表达式,另一个级别用于字符串。