の近くに不正な文字の範囲[^ \ u0009 \ u000A \ u000D \ u0020- \ uD7FF \ uE000- \ uFFFD \ uD800 \ uDC00- \ uDBFF \ uDFFF]java.util.regex.PatternSyntaxException:インデックス71
不正な文字範囲例外を示す上記の行。誰でも助けてくれますか?
上記の行をJavaコードで直接使用すると、エラーは表示されません。
Pattern xmlInvalidChars = Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\uD800\uDC00-\uDBFF\uDFFF]");
ただし、構成XMLファイルから文字列を取得してJavaコードで使用すると、エラーが表示されます。
String chars = ConfigLoader.getInstance().getInvalidCharacters();
Pattern xmlInvalidChars = Pattern.compile(chars);
問題は '\ uDC00- \ uDBFF'であり、この範囲は異常です。パターンとの一致には何が必要ですか?障害のある範囲を削除するには、ハイフンを削除する必要がありますか?また、XMLには単一のバックスラッシュが必要です。 –
@WiktorStribiżewが言っているように、https://en.wikipedia.org/wiki/UTF-8#Invalid_code_points – Simon