Xem những gì nó phù hợp:
public static void main(String[] args) throws Exception {
Pattern pat = Pattern.compile("(?<!function)\\w+");
Matcher mat = pat.matcher("function example");
while (mat.find()) {
System.out.println(mat.group());
}
}
Output:
function
xample
Vì vậy, đầu tiên nó tìm thấy function
, mà không được đi trước bởi "function
". Sau đó, nó tìm thấy xample
trước bởi function e
và do đó không phải là "function
".
Có lẽ bạn muốn mẫu phù hợp với văn bản toàn bộ, không chỉ tìm thấy các kết quả phù hợp trong văn bản.
Bạn có thể làm điều này với Matcher.matches()
hoặc bạn có thể thay đổi các mô hình để thêm đầu và cuối neo:
^(?<!function)\\w+$
Tôi thích cách tiếp cận thứ hai vì nó có nghĩa là mô hình tự định nghĩa khu vực phù hợp với mình chứ không thì vùng được xác định bằng cách sử dụng nó. Đó chỉ là vấn đề ưu tiên.
Nguồn
2013-08-02 11:32:15