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