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.