diff options
author | Alban Gruin | 2018-09-06 17:10:54 +0200 |
---|---|---|
committer | Alban Gruin | 2018-09-06 21:03:49 +0200 |
commit | 4b53705a15d07caa12c2ca43b00ad03a81e600bd (patch) | |
tree | 774c6a0a7f3d76be29ae8b2dfbae78680f11f022 /utils.py | |
parent | eaed30e578f7e403a83fe0adff555e5c95654989 (diff) |
groupes: ajout du support d’une nouvelle syntaxe
Certains groupes ont la syntaxe suivante :
L1 4L s1 CM4L
L1 4L s1 TD4L1
L1 4L s1 TP4L12
etc.
Le « 4 » entre le CM/TD/TP et le « numéro » fait échouer la regex. Ce
commit rajoute le support de cette syntaxe, et ajoute les cas de test adéquats.
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
Diffstat (limited to 'utils.py')
-rw-r--r-- | utils.py | 25 |
1 files changed, 13 insertions, 12 deletions
@@ -55,19 +55,20 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$ - # ^ début de la ligne - # (.+?) correspond à au moins un caractère - # \s* éventuellement un ou plusieurs espaces - # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces - # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » - # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres - # )? groupe optionnel - # (\s+ un ou plusieurs espaces - # \([^\(\)]+\))? un ou plusieurs caractères (exceptés des espaces) entre parenthèses - # $ fin de la ligne + # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$ + # + # ^ début de la ligne + # (.+?) correspond à au moins un caractère + # \s* éventuellement un ou plusieurs espaces + # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces + # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » + # (\d?\w\d{0,3}) un chiffre optionnel, un caractère, entre 0 et 3 chiffres + # )? groupe optionnel + # (\s+ un ou plusieurs espaces + # \([^\(\)]+\))? un ou plusieurs caractères entre parenthèses + # $ fin de la ligne group_regex = re.compile( - r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$") + r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$") search = group_regex.search(name) if search is None: |