2012-03-06 32 views
11

[^ abc] ký tự bất kỳ trừ: a, b, hoặc cbiểu thức chính quy: Bất kỳ nhân vật ngoại trừ chuỗi

Nhưng làm thế nào tôi có thể làm regex cho bất kỳ nhân vật ngoại trừ chuỗi abc

Vì vậy, một cái gì đó như thế

"Hello abc awesome world".scan /[^(abc)]+/ 

Sẽ trả về "Xin chào" và "thế giới tuyệt vời".

PS: Và nó không phải là về việc tách chuỗi

+0

Related: http://stackoverflow.com/q/5504272/946850 – krlmlr

+0

Cũng liên quan, có lẽ gần hơn: http://stackoverflow.com/q/6180556/946850 – krlmlr

+0

Cảm ơn bạn, tên người dùng! :) – fl00r

Trả lời

15

này được gọi là lookaround, trong trường hợp của bạn, bạn sẽ muốn sử dụng lookahead tiêu cực. Tôi không chắc chắn về cú pháp chính xác trong Ruby, nhưng một cái gì đó dọc theo (?!abc) có thể hoạt động. Lưu ý rằng lookaround không tiêu thụ bất kỳ đầu vào, vì vậy bạn sẽ cần phải có điều này theo sau bởi bất kỳ mô hình mà bạn muốn phù hợp. Có lẽ (?:(?!abc).)+ là những gì bạn đang tìm kiếm?

+1

Đã lưu cho tôi nhiều thời gian. Đã làm '(?! Abc). +', Mà đã làm các lookahead tiêu cực cho một chuỗi toàn bộ các ký tự. Điều này xuất hiện để làm điều đó trên một nhân vật bằng cơ sở nhân vật, mà thậm chí không xảy ra với tôi. Bây giờ tất cả là tốt và hạnh phúc. Gracias! – user1630830

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