Tôi có một vấn đề khá đặc biệt. Tôi đang cố tìm mẫu như [some string][word boundary]
. Đơn giản hóa, mã của tôi là: b không khớp khi ký tự trước là một ranh giới từ
final Pattern pattern = Pattern.compile(Pattern.quote(someString) + "\\b");
final String value = someString + " ";
System.out.println(pattern.matcher(value).find());
Logic của tôi nói với tôi điều này nên luôn luôn xuất true
, bất kể những gì someString
là. Tuy nhiên:
- nếu kết thúc bằng ký tự từ (ví dụ: "abc"),
true
được xuất; - nếu
someString
kết thúc bằng ranh giới từ (ví dụ: "abc."),false
được xuất.
Bất kỳ ý tưởng gì đang xảy ra? Giải pháp hiện tại của tôi là sử dụng \W
thay vì \b
, nhưng tôi không chắc chắn về các tác động.
Vâng, nhưng thời gian trong 'abc.' nên trở thành một phần của regex (thông qua 'Pattern.quote ("abc").'. Vì vậy, mô hình sẽ trở nên "' abc.' theo sau là một ranh giới từ ", phải khớp với' abc.' theo sau là một dấu cách. – Felix
@Felix cho một ký tự là một ranh giới từ, nó phải là một ký tự không phải là từ được đặt trước bởi một ký tự từ. một thời gian không đáp ứng yêu cầu này –
Cảm ơn! Tôi đã bị ấn tượng vì nó chỉ là một phím tắt của lớp nhân vật, giống như '\ W'. – Felix