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

Java正規表現の数量詞のタイプ


正規表現の作成中に出現回数を指定する場合は、数量詞を使用できます。 Javaは、貪欲な数量詞、嫌がる数量詞、所有格の数量詞の3種類の数量詞をサポートしています。

貪欲な数量詞- 貪欲な数量詞はデフォルトの数量詞です。貪欲な数量詞は、入力文字列から可能な限り一致します(可能な限り最長の一致)。一致が発生しなかった場合は、最後の文字を残して再度一致します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regex = "[0-9]+";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(input);
      System.out.println(""Matched text: );
      while (matcher.find()) {
         System.out.println(matcher.group());
      }
   }
}

出力

Enter input text:
Matched text:
45545

気が進まない数量詞- 非欲張り/不本意な数量詞は可能な限り一致しません。最初に非欲張り数量詞は最初の文字と一致します。一致が発生しなかった場合、入力文字列から別の文字を追加して一致を試みます。 「?」を配置すると貪欲な数量詞の後、それは気が進まないか、貪欲でない数量詞になります。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regex = "[0-9]+?";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(input);
      while (matcher.find()) {
         System.out.println(matcher.group());
      }
   }
}

出力

Enter input text:
12345678
1
2
3
4
5
6
7
8

所有格の数量詞- 所有格の数量詞は貪欲な数量詞に似ていますが、唯一の違いは、最初にできるだけ多くの文字を一致させようとし、貪欲な数量詞とは異なり一致が発生しなかった場合、バックトラックしないことです。

貪欲な数量詞の後に「+」を付けると、所有格の数量詞になります。所有格の数量詞のリストは次のとおりです。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regex = "[0-9]++";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(input);
      while (matcher.find()) {
         System.out.print(matcher.group());
         System.out.println();
      }
   }
}

出力

Enter input text:
45678
45678

  1. Java正規表現を使用して単語の境界を一致させる方法は?

    メタ文字「\\b」を使用して単語の境界を一致させることができます。 例1 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example {    public static void main(String args[]) {       //Reading String from user       System.out.println("En

  2. Javaで正規表現を使用して文字列からHTMLタグを抽出するにはどうすればよいですか?

    javaのjava.util.regexパッケージは、文字シーケンスの特定のパターンを見つけるためのさまざまなクラスを提供します。 パターン このパッケージのクラスは、正規表現のコンパイル済み表現です。正規表現を文字列と照合するために、このクラスは2つのメソッド、つまり-を提供します。 compile() −このメソッドは、正規表現を表す文字列を受け入れ、Patternクラスのオブジェクトを返します。 matcher() −このメソッドは文字列値を受け入れ、指定された文字列を現在のパターンオブジェクトによって表されるパターンに一致させるマッチャーオブジェクトを作成します。