Des expressions régulières lisibles !

par Vincent Poulailleau - 1 minute de lecture - 148 mots

J’entends souvent que les expressions régulières ne sont pas lisibles, et c’est effectivement un de leurs gros défauts. Certains disent même qu’elles sont du code qu’on écrit une fois et qu’on ne touche plus ensuite. Mais elles sont tellement puissantes qu’il est difficile de passer à côté.

Pour ceux qui veulent des expressions régulières lisibles, en Python, il existe cursive_re (https://github.com/Bogdanp/cursive_re), un générateur d’expressions régulières, que l’on peut combiner ensuite avec le module re de Python.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from cursive_re import *  # ne faites pas d'import *

diese = text('#')
chiffre_hexa = any_of(
    in_range('0', '9')
    + in_range('a', 'f')
    + in_range('A', 'F')
)
couleur_hexa = (
    beginning_of_line()
    + diese
    + group(
        repeated(chiffre_hexa, exactly=6)
        | repeated(chiffre_hexa, exactly=3)
    )
    + end_of_line()
)

print(str(couleur_hexa))
# '^\\#([a-f0-9]{6}|[a-f0-9]{3})$'

J’ai découvert ce projet grâce à https://pythonbytes.fm/episodes/show/103/getting-to-10x-results-for-developers.