- motif (Perl-style) :
([^?*]*)/([^/]+)
= chercher le dernier / et s'assurer qu'il n'y a pas de ? ni * avant
- (|([^.].*))\.flac autrement dit (\.flac)|([^.].*\.flac)
= le nom se termine par .flac et ne commence pas par . ou bien le nom est .flac
On voit plusieurs motifs (en gras) :
- un symbole ASCII isolé ou un texte ASCII
- "tous les caractères sauf ceux-ci" :
[^.] et
[^?*]UTF8 a été conçu pour avoir ces propriétés :
- les caractères ASCII sont codés tels quels : donc l'ASCII est de l'UTF8
- un octet dont la valeur est celle d'un caractère ASCII code toujours le "code point" de ce caractère ASCII : dans un texte codé en UTF8, un octet codant la valeur ASCII d'un symbole
/ représente toujours ce symbole, un octet codant la valeur ASCII de
a représente toujours le "code point" "a minuscule".
Donc l'automate reconnaissant le motif Unicode
[^?*] en UTF8 est le même que l'automate reconnaissant ce même motif dans un "ASCII étendu" quelconque (codage de caractère un octet qui est un sur-ensemble de l'ASCII).
De même, le motif Unicode
\.flac se compile en UTF8 de la même façon que le motif ASCII-étendu
\.flac.