Tôi có danh sách các từ khóa được nhập vào bởi người sử dụng và họ có thể chứa các ký tự đặc biệt như $, #, @, ^, &,
, vvJava Regular Expression to Match Lời Chính xác Chứa kí tự đặc biệt
Theo yêu cầu của tôi khi bao giờ tôi nhận được danh sách các tin nhắn văn bản i cần phải tìm kiếm tất cả các từ khóa trong mỗi thư.
Chúng tôi cần phải đối sánh chính xác từ khóa.
TRƯỜNG HỢP 1: Đơn giản theo từ khóa - Tin Simple
tôi đã sử dụng \b
để phù hợp với từ khóa chính xác và nó làm việc tốt.
public static void main(String[] args) {
String patternStr = "(?i)\\bHello\\b";
Pattern pattern = Pattern.compile(patternStr);
List<String> strList = new ArrayList<String>();
strList.add("HHello Message");
strList.add("This is Hello Message ");
strList.add("Now Hellos again.");
for(String str : strList) {
Matcher matcher = pattern.matcher(str);
System.out.println(">> "+matcher.find());
}
}
OUTPUT như dự kiến
>> false
>> true
>> false
TRƯỜNG HỢP 2: từ khóa đơn giản - nhắn với nhân vật đặc biệt
Bây giờ, nếu tôi chạy trên cùng một mã cho thông điệp sau đây thì nó không hoạt động như mong đợi.
List<String> strList = new ArrayList<String>();
strList.add("#Hello Message");
strList.add("This is Hello Message ");
strList.add("Now Hellos again.");
OUTPUT:
true
true
false
Dự kiến OUTPUT
false
true
false
TRƯỜNG HỢP 3: Keyword & nhắn với nhân vật đặc biệt
Nếu tôi nhận được các tin nhắn sau và từ khóa là #Hello
. Tôi đã viết mã sau nhưng nó không hoạt động.
public static void main(String[] args) {
String patternStr = "(?i)\\b#Hello\\b";
Pattern pattern = Pattern.compile(patternStr);
List<String> strList = new ArrayList<String>();
strList.add("HHello Message");
strList.add("This is #Hello Message ");
strList.add("Now Hellos again.");
for(String str : strList) {
Matcher matcher = pattern.matcher(str);
System.out.println(">> "+matcher.find());
}
}
OUTPUT:
>> false
>> false
>> false
Dự kiến OUTPUT:
>> false
>> true
>> false
Làm thế nào tôi có thể thoát khỏi nhân vật đặc biệt và giải quyết CASE 2 and CASE 3
.
Vui lòng trợ giúp.
Ranh giới từ không có nghĩa là ranh giới không gian. Đây là nơi bạn đang bối rối. – tchrist