*, ?, +todos los caracteres coinciden con este carácter. ¿Qué carácter significa "no" coincide con esto? Los ejemplos ayudarían.
*, ?, +todos los caracteres coinciden con este carácter. ¿Qué carácter significa "no" coincide con esto? Los ejemplos ayudarían.
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 .
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.
^((?!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"
^ 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>
?!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.