Regex und Unicode

Ich habe ein Skript, das die Dateinamen von TV-Episoden analysiert (show.name.s01e02.avi zum Beispiel), den Episodennamen (von der www.thetvdb.com-API) aufgreift und sie automatisch in etwas Schöneres umbenennt (Show Name - [01x02 ] .avi)

Das Skript funktioniert einwandfrei, bis Sie versuchen, es für Dateien mit Unicode-Shownamen zu verwenden (etwas, worüber ich nie wirklich nachgedacht habe, da alle Dateien, die ich habe, englisch sind, also zumeist so ziemlich alle in diesen Bereich fallen[a-zA-Z0-9'\-])

Wie kann ich zulassen, dass die regulären Ausdrücke mit Akzenten und ähnlichen Zeichen übereinstimmen? Derzeit sieht der Konfigurationsabschnitt des Regex so aus.

config['valid_filename_chars'] = """0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@£$%^&*()_+=-[]{}"'.,<>`~? """
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'])),
]

Antworten auf die Frage(4)

Ihre Antwort auf die Frage