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

JavaのMatcherクラスstart()メソッドとは?サンプルコード付きで解説

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

Matcherクラスのstart()メソッドは、直前にマッチした文字列の開始インデックス(先頭からの位置)をint型で返します。

start()メソッドの基本的な動作

正規表現における文字クラス「[...]」は、括弧内に指定したいずれか1文字に一致します。以下の例では、この文字クラスを使って入力文字列中の「t」という文字を検索しています。

処理の流れは次のとおりです。

  • compile()メソッドで正規表現をコンパイルし、Patternオブジェクトを作成する
  • matcher()メソッドに入力文字列を渡して、Matcherオブジェクトを取得する
  • find()メソッドでマッチ箇所を順番に検索し、見つかるたびにstart()メソッドで開始インデックスを出力する

サンプルコード

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StartExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        String regex = "[t]";
        // Patternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);
        // コンパイル済みパターンを文字列に対して適用
        Matcher matcher = pattern.matcher(input);
        while (matcher.find()) {
            int start = matcher.start();
            System.out.println(start);
        }
    }
}

実行結果

Enter input text:
Hello how are you welcome to Tutorialspoint
26
31
42

結果の解説

この例では、入力文字列「Hello how are you welcome to Tutorialspoint」の中に文字「t」が3回出現しています。そのため、それぞれのマッチ位置に対応する3つのインデックス値(26、31、42)が出力されました。

このようにstart()メソッドを活用すれば、正規表現にマッチした文字や文字列が元のテキストのどの位置にあるのかを正確に把握できます。ログ解析やテキスト処理など、位置情報が必要な場面で非常に役立つメソッドです。

  1. JavaのPattern.matcher()メソッドの使い方を実例で解説

    Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージに含まれるPatternクラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが提供するmatcher()メソッドは、入力文字列を表すCharSequenceオブジェクトを引数として受け取り、現在のPatternオブジェクトが表す正規表現と入力文字列を照合するためのMatcherオブジェクトを返します。 matcher()メソッドの基本的な流れ matcher()メソッドを使った正規表現マッチングは、一般的に以下の手順で行い

  2. JavaのMatcher.matches()メソッドとは?使い方をサンプルコード付きで解説

    java.util.regex.Matcherクラスは、正規表現を用いたさまざまなマッチ操作を実行するエンジンを表すクラスです。このクラスにはコンストラクタが用意されておらず、java.util.regex.Patternクラスのmatcher()メソッドを使ってオブジェクトを取得します。 matches()メソッドは、対象の文字列全体が、Patternオブジェクトの作成時に指定された正規表現パターンと一致するかどうかを判定します。一致する場合はtrueを返し、一致しない場合はfalseを返します。重要なポイントとして、このメソッドがtrueを返すためには、検索対象の領域全体がパターンに一致し