Disons que je suis correspondant à un modèle qui a des sous-expressions comme celui-ci:Comment obtenir une sous-expression correspondante à partir d'un match Regex? (C#)
Regex myRegex = new Regex("(man|woman|couple) seeking (man|woman|couple|aardvark)");
string myStraightText = "Type is man seeking woman, age is 44";
MatchCollection myStraightMatches = myRegex.Matches(myStraightText);
string myGayText = "Type is man seeking man, age is 39";
MatchCollection myGayMatches = myRegex.Matches(myGayText);
string myBizarreText = "Type is couple seeking aardvark, age is N/A";
MatchCollection myBizarreMatches = myRegex.Matches(myBizarreText);
Sur le premier match, je voudrais récupérer les informations que le premier sous-expression adaptée « homme » (et pas "femme" ou "couple") et la deuxième sous-expression correspond à "femme" (et non "homme" ou "couple" ou "aardvark"). Alors que le deuxième match était "man" et "man" etc. Cette information est-elle disponible quelque part dans l'objet Match
?
Je ne sais comment obtenir la chaîne complète. Par exemple,
foreach (Match myMatch in myStraightMatches)
{
tbOutput.Text += String.Format("{0}\n", myMatch);
}
obtient "homme qui cherche une femme". Mais je ne sais pas quelles parties de cette chaîne provenaient de quelle sous-expression.
+1 pour les groupes. Rappelez-vous que vous pouvez nommer les groupes dans .net, comme (? (homme | femme | couple)), vous permettra d'identifier le groupe avec myMatch.Groups ["seeker"] –
kiwipom
@IanR, ty; à jour –