JavaのMatcher.matches()メソッドとは?使い方をサンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。
matches()メソッドは、対象の文字列全体が、Patternオブジェクトの作成時に指定された正規表現パターンと一致するかどうかを判定します。一致する場合はtrueを返し、一致しない場合はfalseを返します。重要なポイントとして、このメソッドがtrueを返すためには、検索対象の領域全体がパターンに一致している必要があります。部分的な一致ではfalseとなる点に注意してください。
matches()メソッドの特徴
- 入力文字列全体がパターンに完全一致した場合のみtrueを返す
- find()メソッドは部分一致でもtrueを返すのに対し、matches()は全体一致が条件
- 文字列が正規表現パターンに適合しているかどうかのバリデーション(検証)によく使われる
サンプルコード
以下の例では、ユーザーから入力された文字列が「数字で始まるかどうか」を、正規表現^[0-9].*$を使って判定しています。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchesExample {
public static void main(String args[]) {
// ユーザーから文字列を読み込む
System.out.println("Enter a String");
Scanner sc = new Scanner(System.in);
String input = sc.next();
// 数字で始まる単語にマッチする正規表現
String regex = "^[0-9].*$";
// 正規表現をコンパイル
Pattern pattern = Pattern.compile(regex);
// Matcherオブジェクトを取得
Matcher matcher = pattern.matcher(input);
// マッチしたかどうかを確認
boolean bool = matcher.matches();
if(bool) {
System.out.println("First character is a digit");
} else{
System.out.println("First character is not a digit");
}
}
}
実行結果
Enter a String 4hiipla First character is a digit
この実行例では、入力された文字列「4hiipla」の最初の文字が数字の「4」であるため、正規表現^[0-9].*$に全体一致し、matches()メソッドはtrueを返しています。その結果、「First character is a digit」というメッセージが出力されます。もし先頭の文字が数字以外であれば、falseが返され、もう一方のメッセージが表示される仕組みです。
-
JavaのPattern.matcher()メソッドの使い方を実例で解説
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージに含まれるPatternクラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが提供するmatcher()メソッドは、入力文字列を表すCharSequenceオブジェクトを引数として受け取り、現在のPatternオブジェクトが表す正規表現と入力文字列を照合するためのMatcherオブジェクトを返します。 matcher()メソッドの基本的な流れ matcher()メソッドを使った正規表現マッチングは、一般的に以下の手順で行い
-
JavaのMatcherクラスstart()メソッドとは?サンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使用することで、Matcherオブジェクトを取得できます。 Matcherクラスのstart()メソッドは、直前にマッチした文字列の開始インデックス(先頭からの位置)をint型で返します。 start()メソッドの基本的な動作 正規表現における文字クラス「[...]」は、括弧内に指定したいずれか1文字に一致します。以下の例では、この文字クラ