Estoy intentando crear una expresión regular que detectará cualquier carácter que Windows no acepte como parte de un nombre de archivo (¿son los mismos para otros sistemas operativos? No lo sé, para ser honesto).Regex para reemplazar caracteres que Windows no acepta en un nombre de archivo
Estos símbolos son:
\/: * ? " |
De todos modos, esto es lo que tengo: [\\/:*?\"<>|]
El probador encima en http://gskinner.com/RegExr/ muestra que esto es trabajando. Para la cadena Allo*ha
, el símbolo *
se ilumina, lo que indica que se ha encontrado. Si ingreso Allo**ha
, solo se encenderá el primer *
. Así que creo que necesito modificar esta expresión regular para encontrar todas las apariencias de los personajes mencionados, pero no estoy seguro.
Como ves, en Java, tengo la suerte de tener la función String.replaceAll(String regex, String replacement). La descripción dice:
Reemplaza cada subcadena de esta cadena que coincide con la expresión regular dada con el reemplazo dado.
En otras palabras, incluso si la expresión regular solo encuentra la primera y luego deja de buscar, esta función aún las encontrará todas.
Por ejemplo: String.replaceAll("[\\/:*?\"<>|]","")
Sin embargo, no me siento que puedo correr ese riesgo. Entonces, ¿alguien sabe cómo puedo extender esto?
-1 hacer de esto una qeustion y decirnos el idioma o contexto que está utilizando y que voy a dar su voto hacia atrás – ojblass
También me gustaría saber qué idioma tu uso – Kredns
Tenga en cuenta que, debido a que su expresión regular tiene la forma de un literal de cadena de Java, tiene que hacer doble escape de las barras diagonales inversas: "[\\\\:"? \ "<> |]". La forma en que lo tenía, simplemente estaba escapando de la barra inclinada (lo cual no es necesario, pero tampoco es un error). –