aboutsummaryrefslogtreecommitdiff
path: root/utils.py
diff options
context:
space:
mode:
authorAlban Gruin2018-02-10 20:01:19 +0100
committerAlban Gruin2018-02-10 20:07:06 +0100
commit0f9e5412482467bac55178f225e2f4f5cb9b4fe6 (patch)
tree1f27c4a8485a2f07823e4867454043af7bf4afe1 /utils.py
parent3f88825de1e13ec44822a00589cf9a5913d0a1cd (diff)
Correction de la regex pour supporter les groupes avec plusieurs
parties entre parenthèse. Les nouveaux cas de tests passent avec succès.
Diffstat (limited to 'utils.py')
-rw-r--r--utils.py29
1 files changed, 15 insertions, 14 deletions
diff --git a/utils.py b/utils.py
index 080768b..cd7f1f8 100644
--- a/utils.py
+++ b/utils.py
@@ -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