33

我需要这样的匹配器:

Matcher kuchen = Pattern
        .compile("gibt es Kuchen in der K\u00FCche", Pattern.CASE_INSENSITIVE)
        .matcher("");

问题是它不是简单的ASCII。我知道在这种特殊情况下我可以使用[\u00FC\u00DC]ü,但我需要更通用一点(从其他匹配器组构建正则表达式)。所以根据javadocs

默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。可以通过将 UNICODE_CASE 标志与此标志一起指定来启用 Unicode 感知的不区分大小写匹配。

谁能告诉我如何同时指定这两个标志?

4

4 回答 4

50

尝试

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

它应该可以解决问题。对位掩码进行或运算,您将获得复合特征。

于 2013-08-20T09:58:25.663 回答
15

虽然使用参数更纯粹,但与不使用参数相同"(?iu)gibt es ..."i= 不区分大小写,u= unicode。

于 2013-08-20T10:03:39.673 回答
10

使用按位或,例如Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE.

于 2013-08-20T09:58:55.200 回答
7

这是一个位掩码,因此您使用按位 OR 运算符|

于 2013-08-20T09:58:40.697 回答