validate regulares regular probar online expresiones excluir creator cadena regex regex-negation

regex - regulares - Cómo negar toda la expresión regular?



regular expression creator online (3)

Suponiendo que solo quiere rechazar cadenas que coincidan con la expresión regular por completo (es decir, mmbla está bien, pero mm no), esto es lo que quiere:

^(?!(?:m{2}|t)$).*$

(?!(?:m{2}|t)$) es un lookahead negativo; dice "comenzando desde la posición actual, los siguientes caracteres no son mm o t , seguidos por el final de la cadena". El anclaje de inicio ( ^ ) al principio asegura que la búsqueda anticipada se aplica al comienzo de la cadena. Si eso tiene éxito, el .* Sigue adelante y consume la cadena.

FYI, si estás usando el método de matches() Java, realmente no necesitas el ^ y el $ final, pero no hacen ningún daño. Sin embargo, se requiere $ en la búsqueda anticipada.

Tengo una expresión regular, por ejemplo (ma|(t){1}) . Coincide con ma y t y no coincide con bla .

Quiero negar la expresión regular, por lo tanto, debe coincidir con bla y no con ma y t , agregando algo a esta expresión regular . Sé que puedo escribir bla , pero la verdadera expresión regular es más compleja.


Use un lookaround negativo: (?! pattern )

Las alternativas positivas se pueden usar para afirmar que un patrón coincide. Las vistas negativas son lo opuesto: se usa para afirmar que un patrón NO coincide. Algunos sabores apoyan las aserciones; algunos ponen limitaciones en mirar hacia atrás, etc.

Enlaces a regular-expressions.info

Ver también

Más ejemplos

Estos son intentos de encontrar soluciones de expresiones regulares para los problemas de los juguetes como ejercicios; Deben ser educativos si intenta aprender las diversas formas en que puede usar las alternativas (anidarlas, usarlas para capturar, etc.):


/b(?=/w)(?!(ma|(t){1}))/b(/w*)

esto es para la expresión regular dada.
el / b es para encontrar el límite de palabras.
la mirada positiva hacia adelante (? = / w) está aquí para evitar espacios.
la mirada negativa hacia adelante sobre la expresión regular original es para evitar coincidencias de la misma.
y finalmente el (/ w *) es atrapar todas las palabras que quedan.
el grupo que contendrá las palabras es el grupo 3.
el patrón simple (?!) no funcionará ya que cualquier subcadena coincidirá
el simple ^ (?! (?: m {2} | t) $). * $ no funcionará ya que su granularidad es líneas completas