Expression regulière

danny3D Messages postés 6 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 30 novembre 2008 - 17 juil. 2008 à 19:22
danny3D Messages postés 6 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 30 novembre 2008 - 21 juil. 2008 à 15:27
salut je suis dans un projet où je veut extraire toutes les chaines entre les caractères > et <
j'utilise l'expression >.*< mais l'extraction ne s'éffectue qu'en considérant le premier > et le dernier < sans tenir compte des < et > qui sont entre les deux extreme:
exemple:
en  fournissant : <1>x<1>y<2>z<h1>a<2>b<3>c<3>
il me retourne : >x<1>y<2>z<h1>a<2>b<3>c<
au lieu de : x, y, z,a,b,c
je ne sais pas, peut etre que quelqu'un peut me corriger par rapport à la conception de l'expression....
merci d'avance

3 réponses

jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
17 juil. 2008 à 20:02
tu dois proceder a une recursivité;
 D'apres l'exemple, le programme a retourné seulement le resultat de l'operation appliquée aux extrimités
ie :  <1>x<1>y<2>z<h1>a<2>b<3>c<3> 

De plus tu a inversé apparemment les deux signes d'inégalité

Bon courage
0
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
17 juil. 2008 à 20:32
Je dirais plutôt que l'analyseur traite correctement l'expression régulière. La règle est toujours de prendre la chaîne la plus grande possible qui match l'expression.
Si tu veux extraire x,y,z,a,b,c, il te faut mettre l'expression ">[^<]*<"
Du coup, il va te rechercher tout ce qu'il y a entre > et < et en s'arrêtant au premier < puisque tu lui interdis de le matcher à cet endroit.
0
danny3D Messages postés 6 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 30 novembre 2008
21 juil. 2008 à 15:27
Trois fois merci, le code marche exactement comme je le voulais...


Danny3D
0
Rejoignez-nous