vendredi, mars 02, 2007

VérifieExpressionRegulière (bis)

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: