「Java」大文字小文字を区別しない正規表現
Java の Pattern で大文字小文字を区別せずに正規表現にマッチさせるサンプルです。
当然ながら、以下のようなコードだと data1 の "Example" だけマッチして、data2、data3 はマッチしません。
■ 大文字小文字が区別されるので "Example" しかマッチしない
package test.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexCaseInsensitive { private static Pattern p = Pattern.compile("Example"); public static void main(String[] args) { String data1 = "Example"; String data2 = "example"; String data3 = "EXAMPLE"; Matcher m = p.matcher(data1); System.out.println("data1:" + m.matches()); m = p.matcher(data2); System.out.println("data2:" + m.matches()); m = p.matcher(data3); System.out.println("data3:" + m.matches()); } }
■ 実行結果
data1:true data2:false data3:false
やり方はいろいろあると思いますが、Pattern#compile(String regex, int flags) で第二引数のフラグに CASE_INSENSITIVE を渡す、正規表現を "(?i)Example" と書く、ことで大文字小文字を区別せずにマッチさせることができます。
・Pattern (Java Platform SE 8 )
https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html
private static Pattern p = Pattern.compile("Example", Pattern.CASE_INSENSITIVE);
or
private static Pattern p = Pattern.compile("(?i)Example");
■ 実行結果
data1:true data2:true data3:true
以上になります。