Problème d'expressions régulières

Signaler
Messages postés
43
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
10 novembre 2004
-
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
-
Bonjour,

Voila ce que je cherche à faire :

J'ai une chaine de la forme :
[argt1]valeur1[argt2]valeur2[argt3]valeur3...

que je souhaite découper en deux tableaux:
tabArg[0] = "argt1" ...... tabVal[0] = "valeur1"
tabArg[1] = "argt2" ...... tabVal[1] = "valeur2"
tabArg[2] = "argt3" ...... tabVal[2] = "valeur3"

Je ne connais pas vraiment les expressions régulières mais je me dis que grâce à elles on doit pouvoir faire quelquechose, non ?

Si quelqu'un veut bien me dépanner.
Merci.

3 réponses

Messages postés
29
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
22 juin 2013

Désolé je ne connais pas vraiment les expressions réguliere ( si tu es libre sur la forme de ta chaine alors moi ce que je ferais c'est un truc du genre
lachaine="argt1+valeur1-argt2+valeur2-"

tu compte le nombre de + ou de -

tu fait un tableau au nombre de + ou de -

( redim tableau(2) )

et pi une petite boucle du style

X=1
Z=""
for i=1 to len(lachaine)
'on prend le premier caracter
z=right (lachaine,1)
' la chaine ce racourci du premier caracter
lachaine=left(lachaine,len(lachaine)-i)
'si le caracter en question es + ou -
if z="+" or z="-" then
'on incrémente le tablo avec la variable qui a comptabilier toute
' les premieres letre
tableau(x)=ZZ
'on remet ZZ a 0 et on incrément X
ZZ=""
X=X+1
else
'si le caracter n'est pas + ou -
' on ajoute le premier caracter qu'on vien de prendre a la liste des
'caracteres dejas pris
ZZ=ZZ & z
end if
next

sinon va la pour les expressions régulieres : http://www.vbfrance.com/codes/LES_EXPRESSIONS_REGULIERES_FACILES_AVEC_REGULAR_GENERATOR/25839.aspx

conucius diait : "On ne tue pas une mouche avec un canon"
moi je dit " ON EN TUE DIX "
0
Messages postés
43
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
10 novembre 2004

Utiliser des tableaux est enviseagable même avec la forme de chaine que j'ai (par contre des caractères comme +, -... peuvent se retrouver dans les valeurs donc ces séparateurs ne vont pas)
mais je pense qu'il est plus propre et plus performant d'utiliser les expresssions régulières.

Merci en tous cas pour ton idée.
0
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
Je testerais cela :
Dim Buffer As String, Tmp() as String,tabArgs() as string, tabVal() as string, i as long, Nb as long,J as Long

Buffer = "[argt1]valeur1[argt2]valeur2[argt3]valeur3..."
Tmp = Split(Buffer,"[")
Nb = Ubound(Tmp)
Redim tabArgs(1 to Nb)
Redim tabVal(1 to Nb)
For i = 1 to Nb
  j = instr(tmp(i),"]")
  tabArgs(i) = Left$(tmp((i),j-1)
  tabVal(i) = Mid$(tmp(i),j+1)
Next
Erase Tmp

Je n'ai pas tester ce bout de code, mais tu devrais avoir ce qu'il te faut dans les tableau tabVal et TabArgs

Christophe R.
0