2016-12-26 72 views
0

這是我的代碼,用於查找專有名詞周圍的相鄰單詞。我在下面提到的代碼中遇到錯誤。我試着添加不同的排列組合和反斜槓和右括號,但仍然會出現錯誤。將感謝幫助。java.util.regex.PatternSyntaxException:索引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礦業是高興地宣佈在特殊的會議上於二零一六年九月二十一日舉行的債券持有人(「會議」)持有人以750,000美元的本金金額持有息率爲12%per_annum的無抵押債券(「債券」)絕大部分批准所有呈列事項,包括延長到期日從2017年2月28日至2019年2月28日。

properNouns - [[],[Cyprium],[日],[該債券],[月]

+0

這是文字模式String不給我任何例外......你能分享'properNouns'和'sentence'的價值嗎? –

+0

請點擊這裏:http://stackoverflow.com/questions/21816788/unclosed-character-class-error – Azodious

+1

你應該總是[quote](https://docs.oracle.com/javase/8/docs/api/java /util/regex/Pattern.html#quote-java.lang.String-)這樣的字符串。 – Seelenvirtuose

回答

3

properNoun[],這是一個character class,它應該包含一些字符 ,如果你想匹配[],你應該逃避這一點,如:\\[\\]

隨着數據,也許你可以不喜歡它:

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

Pattern.quote

返回指定字符串

+0

我正在循環專有名詞,它們包含字符。更新了問題以添加這些值。我的專有名詞集中的第一個值爲空......這是錯誤的原因嗎? – serendipity

+0

@serendipity也許你可以使用'Pattern.quote'來逃離str – chengpohi

+0

它的工作原理!謝謝! – serendipity

相關問題