我需要使用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运行此命令-结果相同。
发布于 2015-07-02 19:30:28
问题似乎出在正则表达式的[^\]部分。[部件启动一个字符类。通常,]结束一个字符类,但是它用\]括起来,所以您已经编写了一个字符类,它包含除]、*、.、j、a、r、$之外的所有字符,并且没有终止。
如果字符类应该包含除反斜杠之外的所有内容,则它应该是[^\\]而不是[^\]。要将正则表达式编写为Java string,您将需要额外的引号级别:"[^\\\\]"。一层引号用于正则表达式,另一层用于字符串。
https://stackoverflow.com/questions/31168872
复制相似问题