正規表現で大文字と小文字を区別しない

String = "ban, pan, an, pn, pen, pension, pEn, PAN";

こんな文字列から「pan,pen,pension,pEn」を抽出するには、

Matcher matcher = Pattern.compile("p[a-zA-Z]+n").matcher(targetString);
while ( matcher.find() ) {
    System.out.println(matcher.group());
}

とすればうまく抽出できます。
これに加えてPANも抽出するには、次のようにします。

Matcher matcher = Pattern.compile("p[a-z]+n", Pattern.CASE_INSENSITIVE).matcher(targetString);
while ( matcher.find() ) {
    System.out.println(matcher.group());
}

Pattern#compileメソッドの第二引数に大文字小文字を区別しないというflagを追加してやるとうまくいきます。よって、もともとのパターンもp[a-zA-Z]nからp[a-z]nとやってもうまく動きます。