当前位置: 首页 > 知识库问答 >
问题:

Java语言util。正则表达式。PatternSyntaxException:索引44附近的未关闭字符类

仉磊
2023-03-14

这是我在专有名词周围查找相邻单词的代码。我收到下面提到的这段代码的错误。我尝试添加不同的排列和反斜杠和结束括号的组合,但仍然收到错误。将感谢帮助。

 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。正则表达式。PatternSyntaxException:
索引44附近的未关闭字符类([^\s]\s[^\s])\s[]\s([^\s]\s[^\s])\s

句子-Cyprium Mining很高兴地宣布,在2016年9月21日举行的债券持有人特别会议(“会议”)上,75万美元本金的无担保债券持有人(年息12%)以压倒性优势批准了所有提交的事项,包括将到期日从2月28日延长,2017年至2019年2月28日。

属性名词 - [[], [塞浦路斯],[二月],[债券],[九月]]

共有1个答案

王成化
2023-03-14

属性Noun值为[],这是一个字符类,它应该包含一些字符,如果你想匹配[],你应该转义这个,比如:\\[\\]

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

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

Pattern.quote:

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

 类似资料: