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 appendTail() của lớp này chấp nhận một đối tượng StringBuffer và nối các ký tự của chuỗi đầu vào (từ cuối khớp cuối cùng đến hết chuỗi) vào nó.
Ví dụ
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AppendTail {
public static void main(String[] args) {
String str = "<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";
String regex = "<b>(\\S+)</b>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
// Gọi appendTail TRƯỚC khi find() - sẽ copy toàn bộ chuỗi
matcher.appendTail(sb);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
System.out.println("Nội dung StringBuffer: \n" + sb);
}
}
Kết quả
is example script Nội dung StringBuffer: <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>
Giải thích: Trong ví dụ này, appendTail() được gọi trước vòng lặp find(), nên nó copy toàn bộ chuỗi gốc vào StringBuffer (vì chưa có khớp nào xảy ra, "cuối khớp cuối cùng" là vị trí 0). Thông thường, appendTail() được gọi sau vòng lặp find() để thêm phần đuôi sau khớp cuối cùng (xem ví dụ ở appendReplacement()).