Lớp java.util.regex.Matcher đại diện cho một công cụ thực hiện các hoạt động so khớp khác nhau. Không có hàm tạo nào cho lớp này, bạn có thể tạo / lấy một đối tượng của lớp này bằng cách sử dụng phương thức match () của lớp java.util.regex.Pattern.
Trong biểu thức chính quy, các cấu trúc lookbehind và lookahead được sử dụng để khớp với một mẫu cụ thể đứng trước hoặc kế tiếp trong một số mẫu khác. Ví dụ:nếu bạn cần chấp nhận một chuỗi chấp nhận từ 5 đến 12 ký tự thì biểu thức chính quy sẽ là -
"\\A(?=\\w{6,10}\\z)";
Theo mặc định, các ranh giới của vùng đối sánh không trong suốt đối với các cấu trúc nhìn trước, nhìn sau và đối sánh ranh giới, tức là các cấu trúc này không thể khớp với nội dung của văn bản nhập ngoài ranh giới vùng -
Ví dụ 1
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class useTransparentBoundsExample { public static void main(String[] args) { //Regular expression to accepts 6 to 10 characters String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 to 12 characters: "); String input = new Scanner(System.in).next(); //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Creating a Matcher object Matcher matcher = pattern.matcher(input); //Setting region to the input string matcher.region(0, 4); //Switching to transparent bounds if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } } }
Đầu ra
Enter 5 to 12 characters: sampleText Match not found
useTransparentBounds () phương thức của phương thức lớp này chấp nhận một giá trị boolean và nếu bạn chuyển true cho phương thức này, trình so khớp hiện tại sẽ sử dụng các giới hạn trong suốt và nếu bạn chuyển false cho phương thức này, nó sẽ sử dụng các giới hạn không trong suốt.
Ví dụ 2
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { //Regular expression to accepts 6 to 10 characters String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 to 12 characters: "); String input = new Scanner(System.in).next(); //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Creating a Matcher object Matcher matcher = pattern.matcher(input); //Setting region to the input string matcher.region(0, 4); //Switching to transparent bounds matcher = matcher.useTransparentBounds(true); if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } } }
Đầu ra
Enter 5 to 12 characters: sampletext Match found