2010-06-03 35 views
5

¿Cómo puedo crear una expresión regular para que NO coincida con algo? Por ejemplo, quiero regex para que coincida con todo lo que NO sea la cadena "www.petroules.com".Regex: ¿cómo decir algo que NO coincida?

Intenté [^www\.petroules\.com] pero eso no pareció funcionar.

Respuesta

6
^(?!www\.petroules\.com$).*$ 

coincidirá con cualquier cadena que no sea www.petroules.com. Esto se llama negative lookahead.

[^www\.petroules\.com] 

medios "Match un carácter excepto w, p, e, t, r, o, u, l, s o punto".

+0

Justo lo que necesitaba, gracias. Aceptará en ~ 10 minutos cuando envíe la primera respuesta correcta. –

+0

'. * $' Es un noop y se puede omitir. –

+0

OK, pero por supuesto, el resultado del partido será una cadena vacía (con una coincidencia exitosa). Si solo está comprobando si una coincidencia es posible, entonces esto no importa. Entonces sí, omita el '. * $', Y terminará más rápido. –

3
(?!...) 

Esto se llama lookahead negativo. Solo coincidirá si la expresión regular ... no coincide. Sin embargo, tenga en cuenta que NO consume caracteres. Esto significa que si agrega algo más allá de), comenzará a coincidir de inmediato, incluso los caracteres que fueron parte de la búsqueda anticipada negativa.

Cuestiones relacionadas