Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1439 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Expressions régulières :-/ avec des dates

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expressions régulières :-/ avec des dates

n°650609
cedricbrun
Posté le 21-02-2004 à 14:26:58  profilanswer
 

'lu tout le monde :hello:
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à  :pt1cable:  
 
 
Un idée ? Si a la limite vous auriez des exemples pour les dates..

mood
Publicité
Posté le 21-02-2004 à 14:26:58  profilanswer
 

n°650617
darkoli
Le Petit Dinosaure Bleu
Posté le 21-02-2004 à 15:17:18  profilanswer
 

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.

n°650621
kfman
Credo quia absurdum
Posté le 21-02-2004 à 16:01:52  profilanswer
 

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.


Message édité par kfman le 21-02-2004 à 16:24:14

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Expressions régulières :-/ avec des dates

 

Sujets relatifs
expressions régulières[Expresssions régulières] Que des chiffre que des lettres !!!
[PHP] Prise de tête avec les expressions régulièresPerle, tu m'ennuies avec tes expressions
expressions régulièresCes satanées expressions régulières...
Plus de sujets relatifs à : Expressions régulières :-/ avec des dates


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR