Expression régulière look behind

smr78 Messages postés 25 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 28 août 2022 - 11 déc. 2006 à 20:29
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 13 déc. 2006 à 14:43
Bonjour,
Je cherche en Vb6, une expression régulière pour chercher à capturer mot2  et mot 3 dans une sous chaîne "blah blah mot1 /mot2/mot3" qui elle même est dans une chaîne principale plus importante.

J'ai auparavant pu isoler les sous-chaînes, mais comment capturer et extrraire mot2 et mot 3 seulement dans les sous-chaînes qui contiennent blah blah mot1 au début?

Soit :
Set reg=new RegEx
reg.pattern=pattern
fullstring="test test blah blah mot1 /mot2/mot3 test test blah blah /mot2/mot3 test"

toto=reg.Execute(fullstring)(0)

Le pattern trivial "(?:blah blah mot1 )(.*)\/(.*)\/" retourne la bonne sous-chaîne mais complète.

Comment distingue t-on donc les parenthèses entre le groupement et la capture?

De la même façon, lorsque je veux capturer le premier mot1 d'une sous-chaîne, seulement si elle se termine par un mot clé, la commande Execute retourne la chaîne complète avec :

pattern=".*(?=\s*mot2\s*mot3)"

Merci pour tout conseil

Cordialement

1 réponse

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 déc. 2006 à 14:43
salut,

pour le mot au début : execute te renvoie un tableau dans lequel 0 est la chaine complète reconnue, 1 le premier groupement, 2 le second....donc un truc dans le genre de reg.Execute(fullstring)(1)

pour le mot en fin : le pattern serait plutôt : "(\w+)(?=\s*mot2\s*mot3)"
   pour récupérer reg.Execute(fullstring)(1)

ShareVB
0
Rejoignez-nous