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

非キャプチャグループJava正規表現:


キャプチャグループを使用すると、複数の文字を1つのユニットとして扱うことができます。グループ化する文字を括弧のセット内に配置する必要があります。例-

(.*)(\\d+)(.*)

複数のグループを照合しようとしている場合は、各グループの照合結果が取得されます。それぞれのグループ番号をgroup()メソッドに渡すことで、グループの結果を取得できます。 1、2、3など(右から左へ)グループ0は一致全体を示します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CapturingGroups {
   public static void main( String args[] ) {
      System.out.println("Enter input text");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      String regex = "(.*)(\\d+)(.*)";
      //Create a Pattern object
      Pattern pattern = Pattern.compile(regex);
      //Now create matcher object.
      Matcher matcher = pattern.matcher(input);
      if (matcher.find( )) {
         System.out.println("Found value: " + matcher.group(0) );
         System.out.println("Found value: " + matcher.group(1) );
         System.out.println("Found value: " + matcher.group(2) );
         System.out.println("Found value: " + matcher.group(3) );
      } else {
            System.out.println("NO MATCH");
      }
   }
}

出力

Enter input text
sample data with 1234 (digits) in middle
Found value: sample data with 1234 (digits) in middle
Found value: sample data with 123
Found value: 4
Found value: (digits) in middle

非キャプチャグループ

非キャプチャグループは、キャプチャグループと同じ機能を提供しますが、結果をキャプチャしません

たとえば、グループを使用してテキストのURLまたは電話番号を照合する必要がある場合、目的のサブ文字列の開始部分が同じであるため、特定のグループの結果をキャプチャする必要はありません。そのような場合は、キャプチャしないグループを使用できます。非キャプチャグループは(?:で始まり、)で終わります。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CapturingGroups {
   public static void main( String args[] ) {
      System.out.println("Enter input text");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      String regex = "(.*)(?:\\d+)(.*)";
      //Create a Pattern object
      Pattern pattern = Pattern.compile(regex);
      //Now create matcher object.
      Matcher matcher = pattern.matcher(input);
      if (matcher.find( )) {
         System.out.println("Found value: " + matcher.group(0) );
         System.out.println("Found value: " + matcher.group(1) );
         System.out.println("Found value: " + matcher.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

出力

Enter input text
sample data with 1234 (digits) in middle
Found value: sample data with 1234 (digits) in middle
Found value: sample data with 123
Found value: (digits) in middle

注: 非キャプチャグループはグループカウントに含まれません。


  1. Javaでの正規表現(再)サブ式

    部分式/メタ文字「()」は正規表現をグループ化し、一致したテキストを記憶します。 例1 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example {    public static void main( String args[] ) {       String input = "Hello how are you welcome to Tutorialspoint&q

  2. Java正規表現を使用して文字列から数値を抽出する

    以下は、Javaで正規表現を使用して文字列から数値を抽出する方法を示す例です。 文字列を解析してそこから情報を抽出できることは、すべてのテスターが持つべき重要なスキルです。これは、APIをテストするときに特に役立ち、JSONまたはXML応答を解析する必要があります。 次のJava正規表現の例は、文字列から数字または数字を抽出することに焦点を当てています。 文字列からすべての数値を抽出 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples { public