【问题标题】:PatternSyntaxException when using Unicode category names in regex在正则表达式中使用 Unicode 类别名称时出现 PatternSyntaxException
【发布时间】:2012-11-25 02:05:35
【问题描述】:

我正在尝试检测一个字符串是否由 Android 应用程序中的所有大写字符组成。 [A-Z] 作为字符类是不够的,因为字母可能用变音符号等装饰。我想使用\p{IsLu}+ 作为模式,但它不断给我一个PatternSyntaxError。

但是,API reference 宣传这些 Unicode 类别名称。我的模拟器运行的 API 级别是 11。

如果我在正则表达式测试器上尝试我的正则表达式模式,例如在regexplanet 上运行良好。

这是 logcat 输出:

12-06 22:08:07.854:E/AndroidRuntime(737):致命异常: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)

【问题讨论】:

    标签: java android regex unicode uppercase


    【解决方案1】:

    在您的实际代码中,您似乎写了isLu 而不是IsLu。但是,Is 无论如何只是一个别名。通常的 Unicode 属性就是\p{Lu}。

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2014-01-17
      相关资源
      最近更新 更多