JavaのPattern.matcher()メソッドの使い方を実例で解説
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。
このパッケージに含まれるPatternクラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが提供するmatcher()メソッドは、入力文字列を表すCharSequenceオブジェクトを引数として受け取り、現在のPatternオブジェクトが表す正規表現と入力文字列を照合するためのMatcherオブジェクトを返します。
matcher()メソッドの基本的な流れ
matcher()メソッドを使った正規表現マッチングは、一般的に以下の手順で行います。
- 正規表現をPattern.compile()メソッドでコンパイルし、Patternオブジェクトを生成する
- Patternオブジェクトに対してmatcher()を呼び出し、対象文字列とのMatcherオブジェクトを取得する
- Matcherオブジェクトのfind()やmatches()などのメソッドで照合結果を判定する
サンプルコード
次の例では、ユーザーが入力した文字列に母音(a、e、i、o、u)が含まれているかどうかを、正規表現「[aeiou]」を使って判定します。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatcherExample {
public static void main(String args[]) {
// 文字列の入力を受け取る
Scanner sc = new Scanner(System.in);
System.out.println("Enter input string");
String input = sc.nextLine();
// 母音を検索するための正規表現
String regex = "[aeiou]";
// 正規表現をコンパイルしてPatternオブジェクトを生成
Pattern pattern = Pattern.compile(regex);
// Matcherオブジェクトを取得
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Given string contains vowels");
} else {
System.out.println("Given string does not contain vowels");
}
}
}
実行結果
Enter input string RHYTHM Given string does not contain vowels
この例では、入力された文字列「RHYTHM」には母音が1つも含まれていないため、「Given string does not contain vowels(母音は含まれていません)」と出力されます。一方、母音を含む文字列(例:「Hello」など)を入力した場合は、find()メソッドが最初の一致を見つけた時点でtrueを返すため、「Given string contains vowels」と表示されます。
なお、文字列全体が正規表現に完全に一致するかどうかを確認したい場合は、find()ではなくmatches()メソッドを使用します。用途に応じて適切なメソッドを選択することが、正規表現処理を正しく行うポイントです。
-
JavaのMatcher.matches()メソッドとは?使い方をサンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。 matches()メソッドは、対象の文字列全体が、Patternオブジェクトの作成時に指定された正規表現パターンと一致するかどうかを判定します。一致する場合はtrueを返し、一致しない場合はfalseを返します。重要なポイントとして、このメソッドがtrueを返すためには、検索対象の領域全体がパターンに一致し
-
JavaのMatcherクラスstart()メソッドとは?サンプルコード付きで解説
java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使用することで、Matcherオブジェクトを取得できます。 Matcherクラスのstart()メソッドは、直前にマッチした文字列の開始インデックス(先頭からの位置)をint型で返します。 start()メソッドの基本的な動作 正規表現における文字クラス「[...]」は、括弧内に指定したいずれか1文字に一致します。以下の例では、この文字クラ