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

JavaのMatchResultインターフェースのend()メソッドとは?使い方を実例で解説

MatchResultインターフェースとは

java.util.regex.MatchResult インターフェースは、正規表現によるマッチ処理の結果を取得するための各種メソッドを提供します。

このインターフェースのオブジェクトは、Matcher クラスの toMatchResult() メソッドを使って取得できます。このメソッドは、現在のマッチャーが保持しているマッチ状態を表す MatchResult オブジェクトを返します。

end()メソッドの役割

MatchResult インターフェースが持つ end() メソッドは、直前に行われたマッチの終了位置(最後にマッチした文字の次のオフセット)を int 型の値として返します。

サンプルコード

import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
    public static void main( String args[] ) {
        String regex = "you$";
        // ユーザーからの入力を読み込む
        Scanner sc = new Scanner(System.in);
        String input = "Hello how are you";
        // Patternクラスのインスタンスを生成
        Pattern pattern = Pattern.compile(regex);
        // Matcherクラスのインスタンスを生成
        Matcher matcher = pattern.matcher(input);
        // マッチが存在するかどうかを確認
        if(matcher.find()) {
            System.out.println("Match found");
        }
        MatchResult res = matcher.toMatchResult();
        int end = res.end();
        System.out.println(end);
    }
}

実行結果

Enter input text:
hello how are you
Match found
17

コードの解説

この例では、正規表現 you$ を使用して、文字列の末尾に「you」という語が存在するかどうかを判定しています。

find() メソッドによってマッチが確認されると、「Match found」が出力されます。その後、toMatchResult() メソッドで MatchResult オブジェクトを取得し、end() メソッドを呼び出すことで、マッチの終了位置である「17」が表示されます。

これは、入力文字列「Hello how are you」において「you」がインデックス14から始まり、インデックス17の位置で終了することを意味します。つまり、end() の戻り値は「最後にマッチした文字の次の位置」を示しているため、部分文字列を切り出す際の終了インデックスとしてそのまま利用できます。

  1. 【Java入門】Matcherクラスのreset()メソッドの使い方を実例付きで解説

    java.util.regex.Matcher クラスは、正規表現によるさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Pattern クラスの matcher() メソッドを使うことで、Matcher オブジェクトを生成・取得できます。Matcher クラスの reset() メソッドを呼び出すと、マッチャーが保持しているすべての状態情報が破棄され、文字シーケンスはデフォルトの状態に戻り、追加位置(append position)もゼロにリセットされます。つまり、同じ Matcher オブジェクトを最初か

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

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