2010-02-24 4 views
4

J'essaie d'itérer chaque groupe nommé dans une expression régulière (par exemple, (?<name>.*)) et, selon le nom du groupe, de définir une propriété d'instance ou de l'ajouter à une collection. Une partie importante est que je ne connaîtrai jamais le nom du groupe lors de l'utilisation de l'expression régulière, donc je ne peux pas utiliser l'indexeur de chaînes sur ma correspondance. Existe-t-il un moyen d'extraire les noms de mes groupes dans mon Match?Itération de groupes nommés Regex

+0

probablement inefficace, mais vous pouvez écrire une regex pour analyser votre expression rationnelle et extraire les groupes de capture nommés sous la forme de "(? . *)" Et ensuite itérer en utilisant cette liste ... – gehsekky

+0

@marduk: Benny a fait utilisez la syntaxe named-group, mais elle n'apparaît pas car il n'utilise pas de backticks pour mettre en forme le regex. –

Répondre

4

Vous pouvez utiliser Regex.GroupNameFromNumber pour parcourir tous les groupes de capture de la regex et trouver leur nom.

+1

http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.groupnamefromnumber.aspx –

+0

Parfait! Je vous remercie! – Benny

Questions connexes