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

Java正規表現のmatches()とfind()の違いは何ですか?


java.util.regex.Matcher classは、さまざまな一致操作を実行するエンジンを表します。このクラスのコンストラクターはありません。クラスjava.util.regex.Patternのmatches()メソッドを使用して、このクラスのオブジェクトを作成/取得できます。

両方のma​​tches() およびfind() 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";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      if(matcher.matches()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
   }
}

出力

Match not found

一方、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";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      //System.out.println("Current range: "+input.substring(regStart, regEnd));
      if(matcher.find()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
   }
}

出力

Match found

  1. JREとJDKの違いは何ですか?

    JDK (Java Development Kit)には、JREを含むJavaアプリケーションを開発および実行するために必要なすべてのツールとライブラリが含まれています。 JRE Javaランタイム環境は、Javaプログラムの実行に必要なJVMおよびその他のライブラリを含むソフトウェアです。

  2. JavaとJavaScriptの違いは何ですか?

    Web開発者のJeremyKeithが2009年に述べたように、「JavaはJavaScriptに、ハムはハムスターになります」。そのアナロジーの正確さは議論の余地がありますが、その背後にある精神は確かです。JavaとJavaScriptは、共通の言語ルートを共有しているにもかかわらず、2つの非常に異なるプログラミング言語です。何年にもわたって、それらはもう少し重複するようになりましたが、JavaScriptは、Webサイトをインタラクティブにする主要なフロントエンド言語であり続け、Javaはサーバーサイドおよびアプリケーションプログラミングで引き続き人気があります。開発者を雇ったり、コーディ