Matcher.matchesメソッドを使用して、正規表現と指定された文字列が一致するかどうかの検証( バリデーション )を行う方法を解説します。
構文
matcher.matches()
インスタンス – matcher: 指定された文字列と正規表現を照合するMatcherオブジェクト
戻り値 – 真偽値( true / false )
サンプルプログラム
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String regex = "[a-zA-Z]+"; // 1文字以上の半角英字
Pattern ptn = Pattern.compile(regex); // 正規表現をコンパイルしPatternオブジェクトを生成
String str = "abcde";
Matcher mtc = ptn.matcher(str); // 指定された文字列と正規表現を照合するMatcherオブジェクトを生成
if(mtc.matches()) { // true
System.out.println(str + "は半角英字です。");
} else {
System.out.println(str + "は半角英字ではありません。");
}
str = "abcde12345";
mtc = ptn.matcher(str);
if(mtc.matches()) { // false
System.out.println(str + "は半角英字です。");
} else {
System.out.println(str + "は半角英字ではありません。");
}
}
}
■出力結果
abcdeは半角英字です。
abcde12345は半角英字ではありません。
補足情報
サンプルプログラム中の以下の処理は、Pattern.matchesメソッド( Pattern.matches(regex, str); )と同じ処理となります。バリデーションを何度も行う場合は、1度生成したPatternオブジェクトを繰り返し利用することでコンパイル回数を減らすことができる、Matcher.matchesメソッドを使用しましょう。性能よりも可読性を重視するといった場合は、Pattern.matchesメソッドの方が分かりやすくて良いかと思います。
Pattern ptn = Pattern.compile(regex); // 正規表現をコンパイルしPatternオブジェクトを生成
Matcher mtc = ptn.matcher(str); // 指定された文字列と正規表現を照合するMatcherオブジェクトを生成
mtc.matches(); // パターンとマッチするかの判定
コメント