java.util.regex.PatternSyntaxException:索引44

时间:2016-12-26 08:29:46

标签: java

这是我的代码,用于查找专有名词周围的相邻单词。我在下面提到的代码中收到错误。我已经尝试添加不同的排列和反斜杠和右括号的组合但仍然得到错误。非常感谢帮助。

 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()){
................

我得到的错误是:

  

线程“main”中的异常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日。

专有名词 - [[],[Cyprium],[二月],[债券],[九月]]

1 个答案:

答案 0 :(得分:3)

properNoun值为[],这是character class,它应该包含一些字符,如果你想匹配[],你应该逃避这一点,例如:\\[\\]

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

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

<强> Pattern.quote

  

返回指定String

的文字模式String