Les expressions rationnelles peuvent vite devenir compliquées, difficiles à lire ou à déboguer.
Python permet de détailler ces expressions régulières (verbose regular expressions), en passant l'option re.VERBOSE à search. La reconnaissance du motif sera alors telle que :
On reprend le motif des chiffres romains, que l'on commente :
>>> motif = """
... ^ # Début de la chaîne
... M{0,4} # Les milliers : de 0 à 4 M
... (CM|CD|D?C{0,3}) # Les centaines : 900 (CM), 400 (CD),
... # 0-300 (0 à 3 C),
... # ou 500-800 (D, suivi de 0 à 3 C)
... (XC|XL|L?X{0,3}) # dizaines - 90 (XC), 40 (XL), 0-30 (0 à 3 X),
... # ou 50-80 (L, suivi de 0 à 3 X)
... (IX|IV|V?I{0,3}) # unités - 9 (IX), 4 (IV), 0-3 (0 à 3 I),
... # ou 5-8 (V, suivi de 0 à 3 I)
... $ # fin de la chaîne
... """
On peut alors passer ce motif détaillé à search, en incluant l'option re.VERBOSE :
>>> re.search(motif, 'M', re.VERBOSE)
<_sre.SRE_Match object at 0x008EEB48>
>>> re.search(motif, 'MCMLXXXIX', re.VERBOSE)
<_sre.SRE_Match object at 0x008EEB48>
>>> re.search(motif, 'MMMMDCCCLXXXVIII', re.VERBOSE)
<_sre.SRE_Match object at 0x008EEB48>
>>> re.search(motif, 'M')
>>>
Dans la dernière utilisation de search, M n'a pas été reconnu, vu que le drapeau re.VERBOSE a été omis.