概要
Javaで「LITERALフラグ(パターンの中のメタ文字が特別な意味を持たなくなる)」の動作を確認してみました。
以下のページを参考にしました。
実装
以下のファイルを作成しました。
JSample23_1.java
import java.util.regex.*;
class JSample23_1{
public static void main(String[] args){
String target1 = "A1B";
String target2 = "A240B";
String target3 = "A[0-9]*B";
String regex = "A[0-9]*B";
Pattern p1 = Pattern.compile(regex);
Matcher m1_1 = p1.matcher(target1);
System.out.println(target1 + ":" + m1_1.find());
Matcher m1_2 = p1.matcher(target2);
System.out.println(target2 + ":" + m1_2.find());
Matcher m1_3 = p1.matcher(target3);
System.out.println(target3 + ":" + m1_3.find());
System.out.println("---- ----");
Pattern p2 =
Pattern.compile(regex, Pattern.LITERAL);
Matcher m2_1 = p2.matcher(target1);
System.out.println(target1 + ":" + m2_1.find());
Matcher m2_2 = p2.matcher(target2);
System.out.println(target2 + ":" + m2_2.find());
Matcher m2_3 = p2.matcher(target3);
System.out.println(target3 + ":" + m2_3.find());
}
}
以下のコマンドを実行しました。
$ javac JSample23_1.java
$ java JSample23_1
A1B:true
A240B:true
A[0-9]*B:false
---- ----
A1B:false
A240B:false
A[0-9]*B:true
まとめ
何かの役に立てばと。