Tengo un script que analiza los nombres de archivo de episodios de TV (show.name.s01e02.avi por ejemplo), toma el nombre del episodio (de la API www.thetvdb.com) y automáticamente los renombra en algo más agradable (Mostrar nombre - [01x02] .avi)Regex y Unicode
La secuencia de comandos funciona bien, eso es hasta que intente y lo use en archivos que tienen nombres de espectáculos Unicode (algo que nunca pensé, ya que todos los archivos que tengo son Inglés, por lo que en su mayoría bastante, todo cae dentro de [a-zA-Z0-9'\-]
)
¿Cómo puedo permitir que las expresiones regulares coincidan con los caracteres acentuados y los me gusta? Actualmente sección de configuración de la expresión regular se parece ..
config['valid_filename_chars'] = """[email protected]£$%^&*()_+=-[]{}"'.,<>`~? """
config['valid_filename_chars_regex'] = re.escape(config['valid_filename_chars'])
config['name_parse'] = [
# foo_[s01]_[e01]
re.compile('''^([%s]+?)[ \._\-]\[[Ss]([0-9]+?)\]_\[[Ee]([0-9]+?)\]?[^\\/]*$'''% (config['valid_filename_chars_regex'])),
# foo.1x09*
re.compile('''^([%s]+?)[ \._\-]\[?([0-9]+)x([0-9]+)[^\\/]*$''' % (config['valid_filename_chars_regex'])),
# foo.s01.e01, foo.s01_e01
re.compile('''^([%s]+?)[ \._\-][Ss]([0-9]+)[\.\- ]?[Ee]([0-9]+)[^\\/]*$''' % (config['valid_filename_chars_regex'])),
# foo.103*
re.compile('''^([%s]+)[ \._\-]([0-9]{1})([0-9]{2})[\._ -][^\\/]*$''' % (config['valid_filename_chars_regex'])),
# foo.0103*
re.compile('''^([%s]+)[ \._\-]([0-9]{2})([0-9]{2,3})[\._ -][^\\/]*$''' % (config['valid_filename_chars_regex'])),
]
'\ {p}' Carta no es compatible con todos los motores de expresiones regulares, y en el caso de Python, que no está soportado en el motor por defecto 're'. Solo se admite en el paquete 'regex'. – nhahtdh