regex - regulares - Negar los caracteres en la expresión regular
expresiones regulares tutorial (5)
¿Cómo escribiría una expresión regular que coincida con los siguientes criterios?
- Sin numeros
- No hay caracteres especiales
- No hay espacios
en una cuerda
El carácter dentro de una clase de caracteres [^] es el operador de negación común a la mayoría de las implementaciones de expresiones regulares (Perl, .NET, Ruby, Javascript, etc.) Así que lo haría así:
[^/W/s/d]
- ^ - Coincide con cualquier cosa NO en la clase de personaje
- / W - coincide con caracteres que no son palabras (un carácter de palabra se definiría como az, AZ, 0-9 y guión bajo).
- / s - coincide con el espacio en blanco (espacio, tabulador, retorno de carro, avance de línea)
- / d - coincide con 0-9
O puede tomar otro enfoque simplemente incluyendo lo que desea:
[A-Za-z]
La principal diferencia aquí es que la primera incluirá guiones bajos. Eso, y demuestra una forma de escribir la expresión en los mismos términos que estás pensando. Pero si invierte está pensando en incluir caracteres en lugar de excluirlos, a veces eso puede resultar en una expresión regular más fácil de leer.
No me queda completamente claro qué caracteres especiales no quieres. Pero escribí ambas soluciones en caso de que una funcione mejor para usted que la otra.
En Perl, sería algo como:
$string !~ /[/d /W]/
Por supuesto, depende de su definición de "caracteres especiales". /W
coincide con todos los caracteres que no son palabras. Un carácter de palabra es cualquier carácter alfanumérico más el carácter de espacio.
Lo más importante para aprender sobre las expresiones regulares no es su sintaxis, sino la capacidad de explicar claramente lo que está buscando. Eso es realmente el 90% del problema.
Además, generalmente es mejor expresar lo que quieres en lugar de lo que no quieres.
Prueba ^ [^ 0-9 / p {P}] $
var StringInputToClean = @"[:(M)?*a'',/y<>&a#~%{}+.@// /27!;$+]";
var pattern = @"[^a-zA-Z0-9/s]";
string replacement = "";
var result = Regex.Replace(StringInputToClean, pattern, replacement);