Necesito limpiar los nombres de los archivos. Así que tengo este código:Regex para que coincida con cualquier carácter que no sea palabra, pero menos
//\W_ is any non-word character (not [^a-zA-Z0-9_]).
Regex regex = new Regex(@"[\W_]+");
return regex.Replace(source, replacement);
Esto funciona bien, pero ahora no quiero quitar el signo menos (-), así que cambié la expresión regular a esto:
[\W_^-]+
pero eso no trabajo. ¿Qué me perdí?
Si se utiliza el símbolo de intercalación (^ '') en una clase de caracteres en cualquier lugar que no sea el comienzo, pierde su significado especial. Y cuando lo usas correctamente, niega todo en la clase de personaje. Utilice ['[^ a-zA-Z0-9-] +'] (http://rubular.com/r/onJOpL9Fwk) en su lugar. – NullUserException
Gracias. Eso funciona. Pensé que uno podría hacer algo simple con la \ W, pero supongo que no. Si agrega su comentario como respuesta, puedo aprobarlo. – Remy