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

Phương thức Matcher.reset() 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 reset() của lớp này xóa tất cả thông tin trạng thái và đặt lại chuỗi ký tự về mặc định, vị trí append về 0.

Ví dụ 1: Reset matcher về đầu chuỗi gốc

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

public class Reset {
    public static void main(String[] args) {
        String str = "<p>This <b>is</b> an <b>example</b>HTML <b>script</b> where <b>every</b> alternative <b>word</b> is <b>bold</b></p>.";
        String regex = "<b>(\\S+)</b>";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        
        while (matcher.find()) {
            System.out.println("Trạng thái matcher: " + matcher.toMatchResult());
            String result = matcher.group(1);
        }
        
        matcher = matcher.reset();
        System.out.println("Trạng thái sau reset: " + matcher.toMatchResult());
    }
}

Kết quả

Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>is</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>example</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>script</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>every</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>word</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>bold</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=]
Trạng thái sau reset: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=]

Biến thể khác chấp nhận dữ liệu chuỗi và reset Matcher với chuỗi mới đó.

Ví dụ 2: Reset với chuỗi mới

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

public class Reset {
    public static void main(String[] args) {
        String str = "<p>This <b>is</b> an <b>example</b> HTML <b>script</b> where <b>every</b> alternative <b>word</b> is <b>bold</b></p>.";
        String regex = "<b>(\\S+)</b>";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        
        while (matcher.find()) {
            System.out.println("Trạng thái matcher: " + matcher.toMatchResult());
            String result = matcher.group(1);
        }
        
        // Reset với chuỗi mới hoàn toàn
        matcher = matcher.reset("<b>this</b> is <b>new</b> string <b>after</b> reset");
        
        while (matcher.find()) {
            System.out.println("Trạng thái sau reset: " + matcher.toMatchResult());
        }
    }
}

Kết quả

Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>is</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>example</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>script</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>every</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>word</b>]
Trạng thái matcher: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,116 lastmatch=<b>bold</b>]
Trạng thái sau reset: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,51 lastmatch=<b>this</b>]
Trạng thái sau reset: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,51 lastmatch=<b>new</b>]
Trạng thái sau reset: java.util.regex.Matcher[pattern=<b>(\S+)</b> region=0,51 lastmatch=<b>after</b>]