Tôi muốn tạo cụm từ thông dụng từ một chuỗi có chứa các số và sau đó sử dụng biểu mẫu này làm Mẫu để tìm kiếm các chuỗi tương tự. Ví dụ:tạo cụm từ thông dụng từ một chuỗi
String s = "Page 3 of 23"
Nếu tôi thay thế tất cả các chữ số bằng cách \d
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
sb.append("\\d"); // backslash d
} else {
sb.append(c);
}
}
Pattern numberPattern = Pattern.compile(sb.toString());
// Pattern numberPattern = Pattern.compile("Page \d of \d\d");
Tôi có thể sử dụng để phù hợp với chuỗi tương tự (ví dụ "Page 7 of 47"
). Vấn đề của tôi là nếu tôi làm điều này một cách ngây thơ một số metacharacters chẳng hạn như (){}-
, v.v. sẽ không được thoát. Có một thư viện để làm điều này hay một tập hợp đầy đủ các ký tự cho các biểu thức thông thường mà tôi phải và không được trốn thoát? (Tôi có thể cố gắng trích xuất chúng từ Javadocs nhưng lo lắng về việc thiếu một cái gì đó).
Cách khác là có thư viện đã thực hiện việc này (Tôi không ở giai đoạn này muốn sử dụng giải pháp Xử lý ngôn ngữ tự nhiên đầy đủ).
LƯU Ý: Câu trả lời được chỉnh sửa của @ dasblinkenlight hiện hoạt động cho tôi!
Đây là câu trả lời cho câu hỏi ký tự nào, tôi không biết bất kỳ thư viện nào để tạo regex dù: http://stackoverflow.com/questions/399078/what-special-characters-must-be-escaped-in biểu thức bất thường –
@Evan cảm ơn. Tôi chỉ quan tâm đến Java để trông giống như một nguồn tài nguyên hữu ích. –