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
,c
o0
:[^a-c0]
Este último: coincide con cualquier cadena de tres letras excepto
foo
ybar
:(?!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
,c
o0
, mientras que[^a-c0]+
se correspondería con uno o más de cualquier cosa que no eraa
,b
,c
o0
.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.