2012-04-04 27 views
18

Tôi không chắc chắn những gì từ ngữ chính xác cho loại regex sẽ được, nhưng về cơ bản những gì tôi đang cố gắng làm là phù hợp với bất kỳ chuỗi bắt đầu với "/" nhưng không được theo sau bởi "bob /", làm ví dụ.Perl Regex "Không" (lookahead tiêu cực)

Vì vậy, những sẽ phù hợp:

/tom/ 
/tim/ 
/steve 

Nhưng những sẽ không

tom 
tim 
/bob/ 

Tôi chắc chắn câu trả lời là khủng khiếp đơn giản, nhưng tôi đã có một thời gian khó khăn tìm kiếm "regex không phải là" bất cứ nơi nào . Tôi chắc chắn rằng có một từ fancier cho những gì tôi muốn mà sẽ kéo kết quả tốt, nhưng tôi không chắc chắn nó sẽ là gì.

Edit: Tôi đã thay đổi tiêu đề để chỉ ra tên chính xác cho những gì tôi đang tìm kiếm

+1

gì về '/ jimbob/'? những gì về '/ bob/táo'? – ysth

+0

Vì mục đích của tôi/jimbob/không sao, nhưng/bob/táo không phải là – GoldenNewby

Trả lời

19

Bạn có thể sử dụng một lookahead âm (ghi dưới "Extended Patterns" in perlre):

/^\/(?!bob\/)/ 
+0

Có thể là/^ \/(?! bob \ /) /, mặc dù-- nhưng bạn có ý chính của nó. Cảm ơn! – GoldenNewby

+0

@GoldenNewby Woops, bỏ qua một phần của câu hỏi –

+2

Với cờ regex mặc định bây giờ là một đối tượng địa lý, mà '^' được viết tốt hơn là '\ A'. Với các dấu phân tách thay thế và '/ x', nó trông giống' m | \ A/(?! Bob /) | x'. –

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