2011-04-05 20 views
6

me gustaría coincidir con todo, excepto la palabra (s) dado, por lo que dada esta lista:expresión regular para que coincida con todo, excepto las palabras dadas (que puede incluir guiones/guiones)

wordOne 
wordTwo/xy/z 
word-three 
word-four/lots/of/stuff 

que podría utilizar esta expresión regular para que coincida con todo excepto wordOne:

(?!wordOne)\b.+ 
    ==> 
    wordTwo/xy/z 
    word-three 
    word-four/lots/of/stuff 

sin embargo, si quiero hacer coincidir todo excepto una de las palabras que contienen un guión/guión, la misma expresión regular no funciona, porque el guión no es una parte de la palabra límite - que es [a-zA-Z0-9_]

por ejemplo

some-regexp(word-four) 
    ==> 
    wordOne 
    wordTwo/xy/z 
    word-three 

Y

some-regexp(word-four and word-three) 
    ==> 
    wordOne 
    wordTwo/xy/z 

Respuesta

10

Como puedo ver que defina una palabra por línea en sus ejemplos. En este caso esta expresión regular debe trabajar para usted:

^(?:(?!word-four|word-three).)*$ 

se salta las palabras que contienen word-four o word-three.

Según sus ejemplos:

^(?:(?!wordOne).)*$ 
    ==> 
    wordTwo/xy/z 
    word-three 
    word-four/lots/of/stuff 

^(?:(?!word-four).)*$ 
    ==> 
    wordTwo/xy/z 
    word-three 
    word-four/lots/of/stuff 

^(?:(?!word-four|word-three).)*$ 
    ==> 
    wordOne 
    wordTwo/xy/z 

verlo en rubular.

+1

Perfecto. Exactamente lo que estaba buscando. Gracias – Paul

Cuestiones relacionadas