aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2017-09-23 13:02:59 +0200
committerAlban Gruin2017-09-23 13:02:59 +0200
commit2a4033d88be2d1ccd66c1cf788f6dd3e4a468138 (patch)
treea3bb90e3a223f8b7779d0ffb35f29cc0bdbedde5
parentbd26d6ddac7ffb47f1d6dcaedc5edf8091bcb312 (diff)
Changement de la regex des groupes
* Suppression de groupes inutiles * Validation du nom du groupe même si il y a un commentaire après le numéro
-rw-r--r--utils.py39
1 files changed, 21 insertions, 18 deletions
diff --git a/utils.py b/utils.py
index d343def..3ded68e 100644
--- a/utils.py
+++ b/utils.py
@@ -48,26 +48,29 @@ def group_courses(courses):
def parse_group(name):
# Explication de la regex
#
- # ^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$
- # ^ début de la ligne
- # ([\w ]+?) correspond à au moins un caractère
- # (\s* zéro, un ou plusieurs espaces
- # (((CM)(\w))| correspond à CM suivi d'une lettre ou…
- # ((TD)(\w)(\d))| … à TD suivi d’une lettre et d'un chiffre ou…
- # ((TP)(\w)(\d)(\d))) … à TP suivi d’une lettre et de deux chiffres
- # )? groupe optionel
- # $ fin de la ligne
- group_regex = re.compile("^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$")
+ # ^([\w ]+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s\(.+\))?$
+ # ^ début de la ligne
+ # ([\w ]+?) correspond à au moins un caractère
+ # \s+ un ou plusieurs espaces
+ # ((CM(\w))| correspond à CM suivi d'une lettre ou…
+ # (TD(\w)(\d))| … à TD suivi d’une lettre et d'un chiffre ou…
+ # (TP(\w)(\d)(\d)) … à TP suivi d’une lettre et de deux chiffres
+ # )? groupe optionnel
+ # (\s un espace
+ # \(.+\)) un ou plusieurs caractères quelconques entre parenthèses
+ # ? groupe optionnel
+ # $ fin de la ligne
+ group_regex = re.compile("^([\w ]+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s\(.+\))?$")
search = group_regex.search(name)
if search is None:
return name, None, None, None
- parts = search.groups(0)
- if parts[1] == 0:
+ parts = search.groups()
+ if parts[1] is None: # Pas de groupe précis indiqué
return parts[0], None, None, None
- elif parts[4] == "CM":
- return parts[0], parts[5], None, None
- elif parts[7] == "TD":
- return parts[0], parts[8], parts[9], None
- elif parts[11] == "TP":
- return parts[0], parts[12], parts[13], parts[14]
+ elif parts[2] is not None: # Groupe de CM
+ return parts[0], parts[3], None, None
+ elif parts[4] is not None: # Groupe de TD
+ return parts[0], parts[5], parts[6], None
+ elif parts[7] is not None: # Groupe de TP
+ return parts[0], parts[8], parts[9], parts[10]