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  | 
