English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Regexのmatchs()とfind()の違いは何ですか?

本文java.util.regex.Matcherのこのクラスは、さまざまな一致操作を行うエンジンを表します。このクラスにはコンストラクタがありません。matches()java.util.regex.Patternのメソッドで作成されます/このクラスのオブジェクトを取得します。

の両方一致()および発見()のMatcherクラスの試験メソッドが、入力文字列の正規表現に基づいて一致を見つけようと試みます。一致が見つかった場合、両方ともtrueを返します。一致が見つからない場合、両方のメソッドはfalseを返します。

主な違いはこのmatches()このメソッドは、指定された入力の全てのエリアと一致しようと試みます。つまり、一行で数字を検索しようと試みた場合、入力がそのエリアの全ての行に数字を持っている場合にのみ、このメソッドはtrueを返します。

例1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      String regex = "(.*)"(\\d+)".;*)";
      String input = "This is a sample Text, 1234, with numbers in between. "
         + "\n This is the second line in the text "
         + "\n This is third line in the text";
      //パターンオブジェクトを生成する
      Pattern pattern = Pattern.compile(regex);
      //Matcherオブジェクトを生成する
      Matcher matcher = pattern.matcher(input);
      if(matcher.matches()) {
         System.out.println("マッチング項が見つかりました");
      } else {
         System.out.println("マッチング項が見つかりません");
      }
   }
}

結果を出力する

一致項が見つかりませんでした

そしてこのfind()このメソッドは、パターンに一致する次のサブストリングを検索しようと試みます。つまり、このエリアで少なくとも1つの一致が見つかった場合、このメソッドはtrueを返します。

以下の例を参照してください。特定の行と中間の数字を一致させることを試みます。

例2

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      String regex = "(.*)"(\\d+)".;*)";
      String input = "This is a sample Text, 1234, with numbers in between. "
         + "\n This is the second line in the text "
         + "\n This is third line in the text";
      //パターンオブジェクトを生成する
      Pattern pattern = Pattern.compile(regex);
      //Matcherオブジェクトを生成する
      Matcher matcher = pattern.matcher(input);
      //System.out.println("現在の範囲: "+input.substring(regStart, regEnd));
      if(matcher.find()) {
         System.out.println("マッチング項が見つかりました");
      } else {
         System.out.println("マッチング項が見つかりません");
      }
   }
}

結果を出力する

マッチング項を探す