-3

我在这一行收到错误:

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);
                        }
                    }

代码是一个字符串。它分解代码并检查每个单词。如果单词匹配,则为其着色

4

1 回答 1

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);
于 2013-03-04T18:09:45.137 回答