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

Мне нужен такой сопоставитель:

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

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

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

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

4 ответов


попробовать

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

это должно решить проблему. Или-ing bitmask вы получите составные функции.


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


используйте побитовое или, как Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE.


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