PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → EXPRESSION REGULIRES
EXPRESSION REGULIRES
Iniciado por jlclpb, 03,may. 2020 19:03 - 3 respuestas
Miembro registrado
2 mensajes
Publicado el 03,mayo 2020 - 19:03
Bonjour,
je veux trouver dans un fichier TXT si uen date au format JJ/MM/AAAA est présente et uniquement dans ce cas, recopier la ligne dans un deuxième fichier. Je ne trouve rien...... help et merci par avance
TANTQUE ligne_lue <> EOT
Message ("Nombre lignes lues : "+ nb_lec +" Nombre de lignes écrites : "+nb_ecr)
SI VérifieExpressionRégulière (ligne_lue,"*([0-9]{2])/([0-9]{2])/([0-9]{4") = Vrai ALORS
ligne_ecr = ""
ligne_ecr = ligne_lue
fEcritLigne (Lec02, ligne_ecr)
nb_ecr++
Message ("Nombre lignes lues : "+ nb_lec +" Nombre de lignes écrites : "+nb_ecr)
FIN
ligne_lue = fLitLigne(Lec01)
nb_lec++
FIN
Miembro registrado
4.362 mensajes
Publicado el 03,mayo 2020 - 22:01
Bonjour,
VérifieExpressionRégulière vérifie que la chaîne est au format spécifié. Donc, à moins que ta ligne ne soit qu'une date il est logique que tu ne trouve rien.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
962 mensajes
Publicado el 04,mayo 2020 - 08:01
hello,
ton motif n'est pas bon et en plus si tu cherches une date n'importe où sur la ligne avec tout type de caractère présent, cela m'étonnerait que tu y arrives avec VérifieExpressionRégulière. Le mieux c'est d'utiliser l'objet COM vbscript.regex qui est beaucoup plus puissant.
Voici un exemple :
fichier en entrée FicLect.txt :
blabla  04/04/2020 blabla
blabla 03-02-2015
10/10/2010 héhé blabla
blabla blabla 
blabla 12/10/2018


code :
ligne_lue, ligne_ecr sont des chaînes
nb_lec, nb_ecr sont des entiers
MonRegexp est un objet automation "vbscript.regexp"
Lec01 est un entier = fOuvre("M:\Test\FicLect.txt", foLecture)
Lec02 est un entier = fCrée("M:\Test\FicEcr.txt", foLectureEcriture)
MonFiltre est une chaîne = ".*[0-9]{2}/[0-9]{2}/[0-9]{4}.*"
MonRegexp>>Pattern = MonFiltre
SI Lec01 <> -1 ALORS
ligne_lue = fLitLigne(Lec01)
TANTQUE ligne_lue <> EOT
SI MonRegexp>>Test(ligne_lue) = Vrai ALORS
ligne_ecr = ligne_lue
Trace(ligne_ecr)
fEcritLigne (Lec02, ligne_ecr)
nb_ecr++
FIN
ligne_lue = fLitLigne(Lec01)
nb_lec++
FIN
Trace("Nombre lignes lues : "+ nb_lec +" Nombre de lignes écrites : "+nb_ecr)
FIN


Résultat :





--
Ami calmant, J.P
Miembro registrado
2 mensajes
Publicado el 04,mayo 2020 - 09:31
Super et MERCI