指数14附近的非约束组

时间:2013-03-04 17:58:52

标签: java regex

我在这一行上收到错误:

Pattern pattern = Pattern.compile(word + "\\(.*\\)");

它说:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unclosed group near index 14

我知道这个错误是当你离开没有转义的特殊字符,但我没有看到任何...

完整代码:

                StyleConstants.setItalic(set, true);
                    for (String word : code.split("\\s")) {
                        Pattern pattern = Pattern.compile(word + "\\(.*\\)");
                        Matcher matcher = pattern.matcher(word);
                        while (matcher.find()) {
                            doc.setCharacterAttributes(matcher.start(), word.length(), set, true);
                        }
                    }

代码是一个字符串。它会爆炸代码并检查每个单词。如果单词匹配,请将其设为

1 个答案:

答案 0 :(得分:0)

我尝试了以下内容:

Pattern pattern = Pattern.compile("abcd" + "\\(.*\\)");
log.debug("RegEx: " + pattern);

这很好用:

RegEx: abcd\(.*\)

我只能假设你在word中有一些非转义字符。

如果您在编译时不知道word的值,那么在调用compile()方法之前构建模式并记录它:

String regex = word + "\\(.*\\)";
System.out.println("Regex: \"" + regex + "\"");
Pattern pattern = Pattern.compile(regex);