2012-04-04 18 views
18

io non sono terribilmente certo quale sarebbe la formulazione corretta per questo tipo di espressione regolare, ma in fondo quello che sto cercando di fare è di abbinare una stringa che inizia con "/", ma non è seguito da "bob /", ad esempio.Perl Regex "Not" (lookahead negativo)

Quindi questi sarebbe partita:

/tom/ 
/tim/ 
/steve 

Ma questi non avrebbe

tom 
tim 
/bob/ 

Sono sicuro che la risposta è terribilmente semplice, ma ho avuto un momento difficile ricerca di "espressione regolare non" da nessuna parte . Sono sicuro che c'è una parola più elaborata per quello che voglio che possa ottenere buoni risultati, ma non sono sicuro di cosa sarebbe.

Edit: ho cambiato il titolo per indicare il nome corretto per quello che stavo cercando per

+1

che dire '/ jimbob/'? che dire '/ bob/mele'? – ysth

+0

per i miei scopi/jimbob/era okay, ma/bob/mele non era – GoldenNewby

risposta

19

È possibile utilizzare un lookahead negativo (documentato sotto "Extended Patterns" in perlre):

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

Probabilmente/^ \/(?! bob \ /) /, though-- ma avete ottenuto l'essenza di esso. Grazie! – GoldenNewby

+0

@GoldenNewby Woops, trascurato il fatto che una parte della questione –

+2

con le bandiere di default regex ormai una caratteristica, che ''^è meglio scritto come '\ A'. Con delimitatori alternativi e '/ x', sembra' m | \ A/(?! Bob /) | x'. –