2012-04-04 12 views
18

Nie jestem zbytnio pewien, jakie byłoby właściwe sformułowanie tego typu wyrażeń regularnych, ale zasadniczo to, co próbuję zrobić, to dopasować dowolny ciąg zaczynający się na "/", ale nie jest naśladowana przez "bob /" jako przykład.Perl Regex "Not" (negatywny uprzedzający)

Więc to będzie pasować:

/tom/ 
/tim/ 
/steve 

Ale to nie

tom 
tim 
/bob/ 

Jestem pewien, że odpowiedź jest strasznie proste, ale miałem trudny czas poszukiwania „regex nie” Anywhere . Jestem pewny, że istnieje bardziej wyszukane słowo, które chciałoby uzyskać dobre wyniki, ale nie jestem pewien, co by to było.

Edit: Zmieniłem tytuł aby wskazać poprawną nazwę dla tego, co szukałem

+1

co '/ jimbob/'? co z '/ bob/apples'? – ysth

+0

Dla moich celów/jimbob/było w porządku, ale/bob/apples nie był – GoldenNewby

Odpowiedz

19

Można użyć negatywny uprzedzona (udokumentowany pod "Extended Patterns" in perlre):

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

Prawdopodobnie/^ \/(?! bob \ /) /, ale ... masz sens. Dzięki! – GoldenNewby

+0

@GoldenNewby Woops, przeoczyłem tę część pytania –

+2

Z domyślnymi flagami regex teraz funkcja, że ​​'^' jest lepiej napisane jako '\ A'. Z alternatywnymi ogranicznikami i '/ x' wygląda jak' m | \ A/(?! Bob /) | x'. –

Powiązane problemy