Parenthèses capturantes

Signaler
Messages postés
36
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
29 mars 2010
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour à tous,

Je pose cette question alors que je n'en ai pas vraiment besoin (mon problème à déjà été réglé brillament par Bidou) mais plutot pour savoir pour la prochaine fois... un cas d'école en quelque sorte.

Pour une regex de type:

string txt = Regex.Match(str, "Nom :(.+)").Groups[1].Value;


Avec ce code je récupère grace à mon .Groups[1].Value la valeur contenue entre les parenthèses capturantes (.+)

Maintenant imaginons que j'ai plusieurs parenthèses capturantes:

string txt = Regex.Match(str, "Nom :(.+)Prénom :(.+)Age : 
(.+)Adresse :(.+) ").Groups[???].Value;


Comment je définis .Groups pour récupérer le contenu de toutes mes parenthèses capturantes? J'ai essayé .Groups[1-4] / .Groups[1],[2],[3],[4] et bien d'autres solutions encore mais rien ne fonctionne et tous les exemples que j'ai trouvé sur google ne contiennent qu'une seule parenthèse.

Bref si quelqu'un a déjà utilisé cette technique je suis curieux de savoir comment elle fonctionne.

Merci à vous et bon week-end.
A voir également:

2 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Salut,
Il me semble que c'est ce que retourne Group[0] non?


[hr]
-Blog-
-Site Perso-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Ne prend pas en charge les éventuelles exceptions & co :

            string txt = @"g1:1234;g2:5678";
            // Recherche tous les chiffres: 2 groupes (1234) et (5678) qu'on fusionne
            string all Regex.Match(txt, @"(\d+);g.:(\d+)").Groups.Cast<Group>().Select(b> b.Value).Skip(1).Aggregate((c, d) => c + d);



[hr]
-Blog-
-Site Perso-