2012-02-16 35 views
70

Vì vậy, với regex trong java, tôi muốn viết một regex sẽ phù hợp nếu và chỉ nếu mẫu không đứng trước một số ký tự. Ví dụ:regex để kết hợp một cái gì đó nếu nó không được bắt đầu bởi cái gì khác

String s = "foobar barbar beachbar crowbar bar "; 

Tôi muốn khớp nếu thanh không đứng trước foo. Vì vậy, đầu ra sẽ là:

barbar 
beachbar 
crowbar 
bar 

Tôi biết đây có lẽ là một câu hỏi rất đơn giản. Tôi đang cố gắng học regex, nhưng trong khi đó tôi cần một cái gì đó để làm việc ngay bây giờ.

+2

Câu hỏi của bạn không rõ ràng. muốn phù hợp với iff của bạn toàn bộ chuỗi của bạn hoặc mỗi từ (cách nhau bởi không gian) không phải là trước bởi charachters nhất định? –

Trả lời

125

Bạn muốn sử dụng negative lookbehind như thế này:

\w*(?<!foo)bar 

đâu (?<!x) có nghĩa là "chỉ khi nó không có 'x' trước khi thời điểm này".

Xem Regular Expressions - Lookaround để biết thêm thông tin.

Chỉnh sửa: đã thêm \w* để chụp các ký tự trước (ví dụ: "bãi biển").

Các vấn đề liên quan