-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 に答える