在正则表达式中使用Unicode类别名称时出现PatternSyntaxException

Gle*_*emi 0 java regex unicode android uppercase

我试图检测一个字符串是否包含Android应用程序中的所有大写字符.[A-Z]因为字母可以用变音符号等装饰,所以字符类是不够的.我想\p{IsLu}+用于模式,但它不断给我一个PatternSyntaxError.

但是,API引用会公布这些Unicode类别名称.我的模拟器运行的API级别是11.

如果我在正则表达式测试器上尝试我的正则表达式模式,例如在regexplanet上,它工作正常.

这是logcat输出:

12-06 22:08:07.854:E/AndroidRuntime(737):FATAL EXCEPTION:main
12-06 22:08:07.854:E/AndroidRuntime(737):java.util.regex.PatternSyntaxException:U_ILLEGAL_ARGUMENT_ERROR
12-06 22: 08:07.854:E/AndroidRuntime(737):\ p {isLu} +
12-06 22:08:07.854:E/AndroidRuntime(737):at java.util.regex.Pattern.compileImpl(Native Method)

Mar*_*der 6

似乎在您的实际代码中您已经编写isLu而不是IsLu.但是,Is无论如何,这只是一个别名.通常的Unicode属性很简单\p{Lu}.