繁体   English   中英

java.util.regex.PatternSyntaxException:索引44附近的未封闭字符类

[英]java.util.regex.PatternSyntaxException: Unclosed character class near index 44

这是我的代码,用于查找专有名词周围的相邻单词。 我收到下面提到的此代码的错误。 我尝试添加不同的排列以及反斜杠和右括号的组合,但仍然会收到错误。 将不胜感激。

 for (String properNoun : properNouns){

             Pattern pattern = Pattern.compile("([^\\s]+\\s+[^\\s]+)\\s+"+properNoun+"\\s+([^\\s]+\\s+[^\\s]+)\\s+");
             Matcher matcher = pattern.matcher(sentence);

             while (matcher.find()){
................

我得到的错误是:

线程“主”中的异常java.util.regex.PatternSyntaxException:
索引44附近的未封闭角色类
([^ \\ s] + \\ s + [^ \\ s] +)\\ s + [] \\ s +([^ \\ s] + \\ s + [^ \\ s] +)\\ s +

句子 -Cyprium Mining欣然宣布,在2016年9月21日举行的债券持有人特别会议(以下简称“会议”)上,持有人本金750,000美元的无抵押债券的持有人的年利率为12%(债券)。压倒性地批准了所有提出的事项,包括将到期日从2017年2月28日延长至2019年2月28日。

专有名词 -[[],[塞浦路斯],[2月],[债券],[9月]]

properNoun值是[] ,这是一个字符类 ,它应该包含一些字符 ,如果要匹配[] ,则应对此进行转义,例如: \\\\[\\\\]

作为您的数据,也许您可​​以这样做:

Pattern pattern = Pattern.compile("([^\\s]+\\s+[^\\s]+)\\s+"+Pattern.quote(properNoun)+"\\s+([^\\s]+\\s+[^\\s]+)\\s+");

Pattern.quote

返回指定字符串的文字模式字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM