Expressions régulières :-/ avec des dates - C - Programmation
Marsh Posté le 21-02-2004 à 15:17:18
Je ne connais pas la librairie "regex" donc sur ce point je ne pourrais pas t'aider.
Quand j'ai eu besoin d'utiliser des dates, j'ai écris ma propre fonction de test.
Si ton format est "JJ/MM/AAAA-JJ/MM/AAAA", tu peux commencer par verifier la taille de la chaîne qui doit être de 21 (10+1+10) caractères.
Et ensuite tester la première date et ensuite la seconde (qui se trouve en chaîne+10) avec une fonction relativement simple :
chaîne[0] doit être un chiffre (chaîne[0] >= '0' && chaîne[0] <= '9').
etc ...
Bon c'est peut être pas très propre mais ça marche plutôt bien et c'esttèrs simple à coder.
Marsh Posté le 21-02-2004 à 16:01:52
Pourquoi pas ces patterns (- strict au + strict):
^[0-9]{2}/[0-9]{2}/[0-9]{4}\-[0-9]{2}/[0-9]{2}/[0-9]{4}.*$
ou:
^[0-3][0-9]/[0-1][0-9]/[0-9]{4}\-[0-3][0-9]/[0-1][0-9]/[0-9]{4}.*$
ou:
^(([012][0-9])|(3[0-1]))/((0[1-9])|(1[0-2]))/[0-9]{4}\-(([012][0-9])|(3[0-1]))/((0[1-9])|(1[0-2]))/[0-9]{4}.*$
Je ne connais pas la librairie regex, mais assure toi:
- D'utiliser les regex étendues.
- La possibilité d'extraire les sous-chaines d'une chaine matchée avec les parenthèses.
Marsh Posté le 21-02-2004 à 14:26:58
'lu tout le monde
Bon..j'ai besoin des expressions régulières afin de vérifier la conformité des certaines dates. Je le fais en C avec la librairie regex GNU.
Bon, mon problème, c'est que je galère un peu. Je dois reconnaitre une periode de la forme:
JJ/MM/AAAA-JJ/MM/AAAA
et mon pattern est :
"^\\(\\([0-2][1-9]\\)\\|\\(3[01]\\)\\|\\([1-9]\\)\\)\\?/\\(0[0-9]\\)\\|\\(1[0-2]\\)\\?/\\([1-2][0-9][0-9][0-9])\\?-\\(\\([0-2][1-9]\\)\\|\\(3[01]\\)\\|\\([1-9]\\)\\)\\?/\\(0[0-9]\\)\\|\\(1[0-2]\\)\\?/\\([1-2][0-9][0-9][0-9])\\.*$"
seulement il y a des periodes qui sont refusées alors qu'elles ne devraient pas, par exemple :
31/12/2003-07/01/2004
Enfin bon, je pette un peu un cable avec ces trucs là
Un idée ? Si a la limite vous auriez des exemples pour les dates..