J'ai du mal à trouver une bonne ressource qui explique comment utiliser les groupes de capture nommés en C#. Voici le code que j'ai jusqu'à présent :
string page = Encoding.ASCII.GetString(bytePage);
Regex qariRegex = new Regex("<td><a href=\"(?<link>.*?)\">(?<name>.*?)</a></td>");
MatchCollection mc = qariRegex.Matches(page);
CaptureCollection cc = mc[0].Captures;
MessageBox.Show(cc[0].ToString());
Cependant, cela ne montre toujours que la ligne complète :
<td><a href="http://stackoverflow.com/path/to/file">Name of File</a></td>
J'ai essayé plusieurs autres "méthodes" que j'ai trouvées sur divers sites web, mais j'obtiens toujours le même résultat.
Comment puis-je accéder aux groupes de capture nommés qui sont spécifiés dans ma regex ?
3 votes
La rétro-référence doit être au format (?<link>.*) et non (?<link>.* ?)
14 votes
Pour information : si vous essayez de stocker un groupe de capture nommé à l'intérieur d'un fichier xml, alors la fonction
<>
le brisera. Vous pouvez utiliser(?'link'.*)
à la place dans ce cas. Ce n'est pas tout à fait pertinent pour cette question, mais j'ai atterri ici après une recherche Google sur " .net named capture groups ", donc je suis sûr que d'autres personnes le sont aussi...1 votes
Lien StackOverflow avec un bel exemple : stackoverflow.com/a/1381163/463206 Aussi, @rtpHarry, Non le
<>
ne le cassera pas. J'ai pu utiliser lemyRegex.GetGroupNames()
comme noms d'éléments XML.