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.