2011-03-03 25 views
12

¿Es posible crear un reqex que encuentre caracteres que NO es un conjunto específico?Python String reemplazar basado en caracteres NO en RegEx

En lugar de poner en lista negra un grupo de caracteres y reemplazarlos, me sería más fácil permitir un cierto conjunto y reemplazar los caracteres que no están en ese conjunto.

Mi juego es el siguiente: [.a-zA-Z0-9]

me gustaría hacer algo como esto:

clean_filename = re.sub(r'([.a-zA-Z0-9])', "_", filename) 

, obviamente, este código podría reemplazar los caracteres que quiero para mantener, ¿hay alguna manera de reemplazar los personajes que NO están en ese conjunto?

Respuesta

17

Sí, utilice el "modificador" ^ negación: r'[^.a-zA-Z0-9]'

+1

El usuario podría introducir ".." como un nombre de archivo. ¿Estaría bien? – usr

2

Pruebe con:

re.sub(r'[^a-zA-Z0-9]', "_", filename) 
2
clean_filename = re.sub(r'[^.a-zA-Z0-9]', "_", filename) 
Cuestiones relacionadas