2012-04-04 6 views
18

Ich bin nicht ganz sicher, was der richtige Wortlaut für diese Art von Regex wäre, aber im Grunde versuche ich, jede Zeichenfolge zu finden, die mit "/" beginnt wird nicht von "bob /" als Beispiel gefolgt.Perl Regex "Not" (negativer Lookahead)

So würden diese entsprechen:

/tom/ 
/tim/ 
/steve 

Aber das würde nicht

tom 
tim 
/bob/ 

Ich bin sicher, dass die Antwort schrecklich einfach, aber ich hatte eine schwierige Zeit für „regex nicht“ gesucht überall . Ich bin sicher, es gibt ein schickeres Wort für das, was ich will, dass gute Ergebnisse ziehen würde, aber ich bin mir nicht sicher, was es sein würde.

Edit: Ich habe den Titel geändert den richtigen Namen, um anzuzeigen, für das, was ich suchte

+1

was '/ jimbob/'? was ist mit '/ bob/apples'? – ysth

+0

Für meine Zwecke/Jimbob/war in Ordnung, aber/bob/Äpfel war nicht – GoldenNewby

Antwort

19

Sie eine negative Vorschau verwenden können (dokumentiert unter "Extended Patterns" in perlre):

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

Wahrscheinlich/^ \/(?! Bob \ /) /, obwohl-- aber Sie haben das Wesentliche davon. Vielen Dank! – GoldenNewby

+0

@GoldenNewby Woops, diesen Teil der Frage übersehen –

+2

Mit Standard-Regex-Flags jetzt eine Funktion, die '^' ist besser geschrieben als '\ A'. Mit alternativen Begrenzern und '/ x' sieht es wie 'm | aus \ A/(?! Bob /) | x'. –