Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Phương thức Matcher.region(int start, int end) trong Java với ví dụ


Lớp java.util.regex.Matcher đại diện cho một engine thực hiện các phép toán khớp khác nhau. Không có constructor cho lớp này, bạn có thể tạo/nhận đối tượng của lớp này bằng phương thức matcher() của lớp java.util.regex.Pattern.

Phương thức region() của lớp này chấp nhận hai giá trị nguyên đại diện cho vị trí trong chuỗi đầu vào và thiết lập một vùng (region) cho matcher hiện tại.

Ví dụ 1: Giới hạn region ảnh hưởng lookahead

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegionExample {
    public static void main(String[] args) {
        String regex = "\\A(?=\\w{6,10}\\z)";
        System.out.println("Nhập 5 đến 12 ký tự: ");
        String input = new Scanner(System.in).next();
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        // Đặt region chỉ 4 ký tự đầu
        matcher.region(0, 4);
        
        if (matcher.find()) {
            System.out.println("Tìm thấy khớp");
        } else {
            System.out.println("Không tìm thấy khớp");
        }
    }
}

Kết quả

Nhập 5 đến 12 ký tự: sampleText
Không tìm thấy khớp

Ví dụ 2: region() với matches()

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegionExample {
    public static void main(String[] args) {
        String regex = "(.*)(\\d+)(.*)";
        String input = "This is a sample Text, 1234, with numbers in between.";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        // Đặt region từ 0 đến 20
        matcher.region(0, 20);
        
        if (matcher.matches()) {
            System.out.println("Tìm thấy khớp");
        } else {
            System.out.println("Không tìm thấy khớp");
        }
    }
}

Kết quả

Không tìm thấy khớp

Lưu ý: region(start, end) giới hạn phạm vi khớp. Các metacharacter ^ $ \\A \\z hoạt động tương đối với region này (trừ khi dùng transparent/anchoring bounds).