Dans un précédent poste, j'avais déjà abordé l'utilisation de la fonction VérifieExpressionRégulière.
Récemment, j'ai eu l'occasion de l'utiliser avec récupération d'éléments dans des variables.
Le but : vérifier un format de Date comme :
Tue, 11 Apr 2006 18:25:09 +0200
ou
Thu, 1 Mar 2007 04:12:26 +0100 (CET)
Etape par étape :
Chaine / Format
Chaine | Expression régulière | Commentaires |
Tue, | [A-Za-z]{3,3}[,] | |
| [ ]* | Il peut y avoir 1 à plusieurs espaces |
11 Apr 2006 | ([0-9]{1,2}) ([A-Za-z]{3,3}) ([0-9]{4,4}) | |
18:25:09 | ([0-9]{2,2}[:][0-9]{2,2}[:][0-9]{2,2}) | |
+0200 | [\+][0-9]{4,4} | |
| [ ]* | |
(CET) | [\(]*[A-Z]*[\)]* | * siginifie 0 ou plusieurs fois |
Les parenthèses en permettent de définir des parties de l'expression régulière que l'on veut extraire.
Dans ce cas, on peut vérifier et récupérer la date et l'heure en 1 opération.
Il faut ajouter des parenthèses dans l'expression régulière. Ce qui donne au final :
[A-Za-z]{3,3}[,][ ]*([0-9]{1,2}) ([A-Za-z]{3,3}) ([0-9]{4,4}) ([0-9]{2,2}[:][0-9]{2,2}[:][0-9]{2,2}) [\+][0-9]{4,4}[ ]*[\(]*[A-Z]*[\)]*
Ainsi voici le code obtenu :
sJour,sMois,sAnnée,sheure,sDateAVerif sont des chaînes
sDateAVerif = "Tue, 11 Apr 2006 18:25:09 +0200"
SI PAS VérifieExpressionRégulière(sDateAVerif ,"[A-Za-z]{3,3}[,][ ]*([0-9]{1,2}) ([A-Za-z]{3,3}) ([0-9]{4,4}) ([0-9]{2,2}[:][0-9]{2,2}[:][0-9]{2,2}) [\+][0-9]{4,4}[ ]*[\(]*[A-Z]*[\)]*",sJour,sMois,sAnnée,sheure) ALORS
Info("Incorrect")
SINON
Info("Correct",sJour+"/"+sMois+"/"+sAnnée,sheure)
FIN
PS : Comme dirait un vieil ami (très vieux!), lorsqu'on manipule les expressions régulières, il faut un fenêtre de test avec un champ en taille 24. Ainsi on peut voir clairement l'expression régulière.
Aucun commentaire:
Enregistrer un commentaire