Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java MatcherクラスのhitEnd()メソッドとは?サンプルコードでわかる使い方

java.util.regex.Matcherクラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使用することでMatcherオブジェクトを取得できます。

hitEnd()メソッドは、直前に行われたマッチ操作の際に、入力データの末尾まで到達したかどうかを判定するメソッドです。末尾に到達していればtrue、そうでなければfalseを返します。このメソッドがtrueを返した場合、さらに入力データが追加されると、マッチの結果が変わる可能性があることを意味します。

たとえば、正規表現「you$」を使って入力文字列の最後の単語が「you」であるかをチェックするケースを考えてみましょう。最初の入力が「hello how are you」であればマッチに成功します。しかし、その後さらに文章が入力された場合、新しい行の最後の単語が「you」とは限らず、マッチ結果がfalseになる可能性があります。このような状況では、hitEnd()メソッドはtrueを返します。

サンプルコード

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HitEndExample {
    public static void main( String args[] ) {
        String regex = "you$";
        //ユーザーからの入力を読み込む
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        //Patternクラスのインスタンス化
        Pattern pattern = Pattern.compile(regex);
        //Matcherクラスのインスタンス化
        Matcher matcher = pattern.matcher(input);
        //マッチが発生したかどうかを確認
        if(matcher.find()) {
            System.out.println("Match found");
        }
        boolean result = matcher.hitEnd();
        if(result) {
            System.out.println("More input may turn the result of the match false");
        } else {
            System.out.println("The result of the match will be true, inspite of more data");
        }
    }
}

実行結果

Enter input text:
Hello how are you
Match found
More input may turn the result of the match false

  1. 【サンプルコード付き】JavaのMatcherクラスrequireEnd()メソッドの使い方

    JavaのMatcherクラスとrequireEnd()メソッドとは java.util.regex.Matcherクラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスには公開されたコンストラクタは用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。 マッチが成立している状態で、MatcherクラスのrequireEnd()メソッドを呼び出すと、「これ以上入力が続いた場合に、現在のマッチ結果がfalse(不成立)に変わる可能性があるかどうか」を判定できます。可能性がある場合はt

  2. 例で学ぶJava Matcherクラスのpattern()メソッド

    java.util.regex.Matcher クラスは、正規表現による各種マッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されていないため、java.util.regex.Pattern クラスの matcher() メソッドを使用してオブジェクトを生成・取得します。 pattern() メソッドは、現在の Matcher が解釈に使用している Pattern オブジェクトを取得して返します。引数は不要で、戻り値は java.util.regex.Pattern 型です。「実際にどの正規表現で照合を行ったのか」を後から確認したい場合などに便利なメソッドです。