Puede usar clases de caracteres negadas para excluir ciertos caracteres: por ejemplo [^abcde], coincidirá con cualquier carácter menos a, b, c, d, e.
En lugar de especificar todos los caracteres literalmente, puede utilizar abreviaturas dentro de las clases de caracteres: [\w](minúsculas) coincidirá con cualquier "carácter de palabra" (letra, números y guión bajo), [\W](mayúscula) coincidirá con cualquier cosa menos caracteres de palabra; de manera similar, [\d]coincidirá con los dígitos 0-9 mientras que [\D]coincide con cualquier cosa menos con los dígitos 0-9, y así sucesivamente.
Hay dos formas de decir "no coincide": rangos de caracteres y búsqueda anticipada / retrospectiva negativa de ancho cero.
El primero: no coinciden a, b, co 0:[^a-c0]
Este último: coincide con cualquier cadena de tres letras excepto fooy bar:
(?!foo|bar).{3}
o
.{3}(?<!foo|bar)
Además, una corrección para usted: *, ?y +no representa realmente a nada. Son operadores de repetición y siempre siguen un operador de coincidencia. Por lo tanto, a+los medios coinciden con uno o más de a, [a-c0]+medios coinciden con uno o más de a, b, co 0, mientras que [^a-c0]+se correspondería con uno o más de cualquier cosa que no era a, b, co 0.
Respuestas:
Puede usar clases de caracteres negadas para excluir ciertos caracteres: por ejemplo
[^abcde], coincidirá con cualquier carácter menos a, b, c, d, e.En lugar de especificar todos los caracteres literalmente, puede utilizar abreviaturas dentro de las clases de caracteres:
[\w](minúsculas) coincidirá con cualquier "carácter de palabra" (letra, números y guión bajo),[\W](mayúscula) coincidirá con cualquier cosa menos caracteres de palabra; de manera similar,[\d]coincidirá con los dígitos 0-9 mientras que[\D]coincide con cualquier cosa menos con los dígitos 0-9, y así sucesivamente.Si usa PHP, puede echar un vistazo a la documentación de clases de caracteres de expresiones regulares .
fuente
Hay dos formas de decir "no coincide": rangos de caracteres y búsqueda anticipada / retrospectiva negativa de ancho cero.
El primero: no coinciden
a,b,co0:[^a-c0]Este último: coincide con cualquier cadena de tres letras excepto
fooybar:(?!foo|bar).{3}o
.{3}(?<!foo|bar)Además, una corrección para usted:
*,?y+no representa realmente a nada. Son operadores de repetición y siempre siguen un operador de coincidencia. Por lo tanto,a+los medios coinciden con uno o más dea,[a-c0]+medios coinciden con uno o más dea,b,co0, mientras que[^a-c0]+se correspondería con uno o más de cualquier cosa que no eraa,b,co0.fuente
^((?!foo).)+$Coincide con cualquier línea que no contenga foo regex101.com/r/z6a65l/4[^](dentro de [] ) es la negación en una expresión regular mientras que^es "comienzo de cadena"[^a-z]coincide con cualquier carácter que no sea de la "a" a la "z"^[a-z]significa que la cadena comienza con de "a" a "z"Referencia
fuente
^se utiliza al principio de un rango de caracteres o afirmaciones de búsqueda anticipada / retrospectiva negativas.>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>fuente
?!en los últimos 2 ejemplos o puede usarlo!solo? ¿Qué hace?ahí??para saber que es una extensión. Otros motores de expresiones regulares pueden tener sus propias reglas.