diff options
author | Alban Gruin | 2018-02-10 20:01:19 +0100 |
---|---|---|
committer | Alban Gruin | 2018-02-10 20:07:06 +0100 |
commit | 0f9e5412482467bac55178f225e2f4f5cb9b4fe6 (patch) | |
tree | 1f27c4a8485a2f07823e4867454043af7bf4afe1 | |
parent | 3f88825de1e13ec44822a00589cf9a5913d0a1cd (diff) |
Correction de la regex pour supporter les groupes avec plusieurs
parties entre parenthèse. Les nouveaux cas de tests passent avec succès.
-rw-r--r-- | utils.py | 29 |
1 files changed, 15 insertions, 14 deletions
@@ -1,4 +1,4 @@ -# Copyright (C) 2017 Alban Gruin +# Copyright (C) 2017-2018 Alban Gruin # # celcatsanitizer is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published @@ -53,19 +53,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+\(.+\))?$ - # ^(.+?)\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 pliseurs 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+\(.+\))?$") + # ^(.+?)\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 + group_regex = re.compile( + r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$") + search = group_regex.search(name) if search is None: return name, None, None |