Groupes d'expressions régulières en C# : comprendre les résultats de correspondance
Considérez le bloc de code C# suivant :
<code class="csharp">var pattern = @"\[(.*?)\]"; var matches = Regex.Matches(user, pattern); if (matches.Count > 0 && matches[0].Groups.Count > 1) ...</code>
Ceci le code utilise une expression régulière pour extraire le texte entre crochets d’une chaîne de saisie utilisateur. Pour l'entrée "Josh Smith [jsmith]", le code renvoie correctement les résultats suivants :
matches.Count == 1 matches[0].Value == "[jsmith]"
Cependant, les lignes suivantes soulèvent des questions :
matches[0].Groups.Count == 2 matches[0].Groups[0].Value == "[jsmith]" matches[0].Groups[1].Value == "jsmith"
Match Grouping
Dans les expressions régulières, les groupes sont utilisés pour capturer des parties spécifiques d'une correspondance. Par défaut, l'intégralité de la correspondance est capturée dans le groupe 0. Des groupes de capture supplémentaires peuvent être définis à l'aide de parenthèses.
Dans le code fourni, l'expression régulière définit un seul groupe de capture, noté (.*?). Ce groupe capture le texte entre crochets (jsmith dans ce cas). Ainsi :
Groupes imbriqués
Dans les expressions régulières plus complexes, il est possible d'avoir des groupes imbriqués. Dans ces cas, chaque groupe contient son propre ensemble de captures. Cependant, dans le code donné, il n'y a qu'un seul niveau de regroupement, donc :
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!