在Java regex.Pattern中设置两个标志

时间:2013-08-20 09:55:21

标签: java regex unicode case-sensitive

我需要一个像这样的匹配器:

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 个答案:

答案 0 :(得分:33)

尝试

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

它应该解决问题。或者使用位掩码,您将获得复合功能。

答案 1 :(得分:13)

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

答案 2 :(得分:7)

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

答案 3 :(得分:6)

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