Set two flags in Java regex.Pattern

18,610

Solution 1

Try

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

it should solve the issue. Or-ing the bitmask you will get compound features.

Solution 2

Though more pure using parameters, same as "(?iu)gibt es ..." without parameters. i = case-insensitive, u = unicode.

Solution 3

Use bitwise OR, like Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE.

Solution 4

It's a bitmask, so you use the bitwise OR operator |.

Share:
18,610
davide
Author by

davide

🍝

Updated on June 13, 2022

Comments

  • davide
    davide about 2 years

    I need a matcher like this:

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

    and the problem is that it is not simple ASCII. I know that in this particular case I could use [\u00FC\u00DC] for the ü, but I need to be a bit more general (building the regex from other matcher groups). So according to javadocs:

    By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. Unicode-aware case-insensitive matching can be enabled by specifying the UNICODE_CASE flag in conjunction with this flag.

    Can anybody tell me how to specify the two flags in conjunction?