Computer >> Máy Tính >  >> Lập trình >> Java

Nhóm không nắm bắt Biểu thức chính quy Java:


Sử dụng nhóm chụp, bạn có thể coi nhiều ký tự như một đơn vị duy nhất. Bạn chỉ cần đặt các ký tự được nhóm bên trong một tập hợp các dấu ngoặc đơn. Ví dụ -

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

Nếu bạn đang cố gắng ghép nhiều nhóm, kết quả đối sánh của mỗi nhóm sẽ được ghi lại. Bạn có thể nhận được kết quả của một nhóm bằng cách chuyển số nhóm tương ứng của nó vào phương thức group (). 1,2, 3, v.v. (từ phải sang trái) nhóm 0 biểu thị toàn bộ trận đấu.

Ví dụ

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");
      }
   }
}

Đầu ra

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

Nhóm không chụp

Nhóm không chụp cung cấp cùng một chức năng của nhóm chụp nhưng nó không ghi lại kết quả

Ví dụ:nếu bạn cần đối sánh URL hoặc số điện thoại từ một văn bản bằng cách sử dụng các nhóm, vì phần bắt đầu của các chuỗi con mong muốn giống nhau nên bạn không cần phải nắm bắt kết quả của các nhóm nhất định, trong những trường hợp như vậy, bạn có thể sử dụng nhóm không thu thập. Nhóm không chụp bắt đầu bằng (?:Và kết thúc bằng).

Ví dụ

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");
      }
   }
}

Đầu ra

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

Lưu ý: Nhóm không chụp sẽ không được tính vào số nhóm.