Установите два флага в Java regex.Pattern

Мне нужен такой помощник:

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

и проблема в том, что это не просто ASCII. Я знаю, что в этом конкретном случае я мог бы использовать [\ u00FC\u00DC] для ü, но мне нужно быть немного более общим (создание регулярного выражения из других групп сопоставления). Итак, согласно javadocs:

По умолчанию нечувствительность к регистру предполагает, что только символы в кодировке US-ASCII сопоставляются. Совпадение без учета регистра Unicode может быть включено путем указания флага UNICODE_CASE в сочетании с этим флагом.

Может ли кто-нибудь сказать мне, как указать два флага вместе?

Ответы

Ответ 1

Пытаться

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

он должен решить проблему. Побирая битовую маску, вы получите сложные функции.

Ответ 2

Хотя более чистые параметры, такие же, как "(?iu)gibt es..." без параметров. i= нечувствительность к регистру, u= unicode.

Ответ 3

Используйте побитовое ИЛИ, например Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE.

Ответ 4

Это битовая маска, поэтому вы используете побитовый оператор OR | ,