- Home ›
- Java入門 ›
- Java正規表現の使い方
CASE_INSENSITIVEフラグ(大文字と小文字を区別しない)
Java の正規表現で利用可能なフラグの一つである CASE_INSENSITIVE フラグの使い方です。 CASE_INSENSITIVE フラグを有効にすると、パターンは大文字と小文字を区別しないようになります。ここでは Java の正規表現における CASE_INSENSITIVE フラグの使い方について解説します。
(Last modified: )
CASE_INSENSITIVEフラグを有効にする
CASE_INSENSITIVE フラグは Java で利用可能なフラグの一つで、有効にすることで大文字と小文字を区別せずにマッチするかどうかを調べるようになります。
CASE_INSENSITIVE フラグを有効にするには、 compile メソッドの引数に Pattern.CASE_INSENSITIVE を指定してパターンオブジェクトを作成してください。
String r = "apple";
Pattern p = Pattern.compile(r, Pattern.CASE_INSENSITIVE);
またはパターンを表す文字列の中に埋め込みフラグの (?i) を記述してください。
String r = "(?i)apple";
Pattern p = Pattern.compile(r);
※ なお CASE_INSENSITIVE フラグは US-ASCII の文字のみに有効です。全角文字など Unicode 準拠文字でも大文字小文字の区別を行わないようにするには、あわせて UNICODE_CASE フラグを有効にする必要があります。「UNICODE_CASEフラグ(Unicode準拠の文字でも大文字と小文字を区別しない)」を参照されてください。
CASE_INSENSITIVEフラグによるマッチングの違い
CASE_INSENSITIVE フラグを有効にした場合にどのように変わるのかを確認します。パターンとして apple を指定した場合で試してみます。
String r = "apple"; Pattern p = Pattern.compile(r);
デフォルトではパターンは大文字と小文字を区別するので apple にはマッチしますが Apple や APPLE にはマッチしません。
〇 apple
✕ Apple
✕ APPLE
次に CASE_INSENSITIVE フラグを有効にしてみます。
String r = "apple"; Pattern p = Pattern.compile(r, Pattern.CASE_INSENSITIVE);
パターンは大文字と小文字を区別せずにマッチするかどうか調べるので apple の他に Apple や APPLE にもマッチします。
〇 apple 〇 Apple 〇 APPLE
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample17-1.java という名前で保存します。
import java.util.regex.*; class JSample17_1{ public static void main(String[] args){ String[] target = {"apple", "Apple", "APPLE"}; String regex = "apple"; Pattern p1 = Pattern.compile(regex); for (int i = 0; i < target.length ; i++){ Matcher m = p1.matcher(target[i]); System.out.println(target[i] + ":" + m.find()); } System.out.println("---- ----"); Pattern p2 = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); for (int i = 0; i < target.length ; i++){ Matcher m = p2.matcher(target[i]); System.out.println(target[i] + ":" + m.find()); } } }
コンパイルを行います。
javac -encoding UTF-8 JSample17_1.java
その後で、次のように実行してください。
java JSample17_1
パターン文字列が、 3 つの文字列に対してそれぞれ文字列全体とマッチするかどうかを調べ結果を画面に表示しました。
-- --
Java の正規表現における CASE_INSENSITIVE フラグの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。