Expressions Régulieres

cs_franckystar Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 16 septembre 2003 - 8 sept. 2003 à 12:11
sehn Messages postés 41 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 8 octobre 2004 - 17 oct. 2003 à 11:33
Salut @ tousssssssssssss,

O SECOURS!!!
j'ai un truc a faire en vb et je ne sais pas comment manipuler les expressions regulieres.
En fait je recupere une chaine de caractere (string) qui contient une date au format String.
J'ai besoin de recuperer la date de cette chaine et je sais pas comment faire???

EX :
Bonjour, nous sommes le 18/07/2003 et il fait beau.

Je voudrais recuperer "18/07/2003" seulement de cette chaine.
Comment faire??
Merci de votre aide && @ +++++++

Bonne journée @ tous! :)

13 réponses

cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
8 sept. 2003 à 13:29
Nanto

Salut, ce code est un peu "dur" car on présume qu'il y a 10caractères dans la chaine et que le séparateur est un "/".
à toi d'adapter en fonction

Dim iPos As Integer
Dim sDate As String

'donne la position du premier "/", débute la recherche depuis le début de la chaine
iPos = InStr(MaChaineAvecLaDate, "/")
'Récupération de la date, on suppose qu'il y 2 chiffres avant le 1er "" - 10 étant le nombre de caractères de la date complète
sDate = Mid(MaChaineAvecLaDate, iPos - 2, 10)

MsgBox sChaine

Voilà, en espérant t'avoir aidé

@ pulse

Nanto
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
8 sept. 2003 à 13:47
L'expression reguliere que j'utilise pour trouver une date est celle-ci :

/((([0-9]{1,2}\/){2})[0-9]{2,5})/i

C'est à dire "1 ou 2 chiffres suivi d'un slash" et ce, 2 fois, puis de 2 a 5 chiffres pour l'année (5 chiffres pour que ca marche pendant longtemps :o) )

Apres a toi de verifier la possibilite de la date...

Mindiell Software
http://mindiell.free.fr
mindiell@free.fr
0
cs_franckystar Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 16 septembre 2003
8 sept. 2003 à 14:29
Merci beaucoup!!!!!!!!!!!!!!
0
cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
8 sept. 2003 à 17:18
Nanto

Salut,

je ne connaissais pas cette syntaxe, je me suis renseigné auprès de mes colègues qui m'ont expliqué comment cela marchait, par contre, ce serait sympa d'expliquer comment tu utilises ce genre de syntaxe en VB, avec un exemple si possible.

Merci par avance

Nanto
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
8 sept. 2003 à 17:39
Nanto

une autre façon de faire qui serait un peu moins en "dur" : tu envoies ta chaine dans un tableau avec la fonction "split", et tu vérifies si une des entrées de ton tableau peut être une date avec la fonction "IsDate".

c'est un peu mieux...

@ pulse

Nanto
0
cs_franckystar Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 16 septembre 2003
8 sept. 2003 à 17:48
ouai , moi aussi ca m'interesse de savoir comment implementer ce truc ...merci @ toi!
0
cs_franckystar Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 16 septembre 2003
8 sept. 2003 à 17:50
ouai mais tu split avec quoi??? les "/" ??? c'est un peu dangereux car le fichier que je parse peut eventuellement contenir d'autres "/" et cela me tuerai tout le programme.
Autre chose : dans le tableau - qui contiendrai du format String - est ce que la fonction "IsDate" peut discerner une date dans une chaine de caractere???
Merci encore.
0
cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
8 sept. 2003 à 17:56
Nanto

tu split avec l'espace comme séparateur (chr(32), et tu obtients un tableau qui contient tous les éléments de ta string qui sont séparés par un espace.
La fonction "IsDate" vérifie si elle peut transformer une chaine en date.

info du MSDN :
Renvoie une valeur de type Boolean qui indique si uneexpression peut être convertie en date.

Syntaxe

IsDate(expression)

L'argument expression est une valeur de typeVariant contenant uneexpression de date ou uneexpression de chaîne qui peut être interprétée comme une date ou une heure.

Remarques

La fonction IsDate renvoie la valeur True si l'expression est une date ou peut être reconnue en tant que date ; sinon elle renvoie la valeur False. Dans Microsoft Windows, la plage des dates valides s'étend du 1er janvier 100 au 31 décembre 9999. Les plages varient en fonction des systèmes d'exploitation.

voilà

@ pulse
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
8 sept. 2003 à 17:58
Je suis au boulot, je vuos poste ca ce soir :o)

Mindiell Software
http://mindiell.free.fr
mindiell@free.fr
0
cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
9 sept. 2003 à 14:20
oki, j'attends avec impatience,

merci par avance.

Nanto
Nanto
0
cs_Nanto Messages postés 32 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 21 décembre 2009
11 sept. 2003 à 09:31
Salut Mindiel,

je suis désolé de revenir à la charge, mais toujours pas de news sur l'utilisation de cette expression.
Pourrait-on avoir un petit exemple en VB svp ??

Merci par avance

Nanto
0
sehn Messages postés 41 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 8 octobre 2004
17 oct. 2003 à 11:05
Et alors?
0
sehn Messages postés 41 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 8 octobre 2004
17 oct. 2003 à 11:33
try this, mais je ne l'ai pas vraiement testé

ajouter le référence Microsoft VBscript

Function IsDateValid(ByVal MaDate As String) As Boolean
Dim reg As New Regex
Dim Mc As MatchCollection

reg =((([0-9]{1,2}\/){2})[0-9]{2,5})

Mc = Reg.Matches(MaDate)

If Mc.Count <> 1 Then
IsDateValid = False
Else
IsDateValid = True
End If
End Function
0
Rejoignez-nous