Groupes d'expressions régulières en C#
En C#, les expressions régulières fournissent des outils puissants pour le traitement de texte. Comprendre comment les groupes fonctionnent au sein de ces expressions est crucial pour extraire des informations spécifiques. Explorons comment les groupes d'expressions régulières sont utilisés et déchiffrons leur comportement dans un scénario donné.
Considérez l'expression régulière suivante et un exemple de chaîne d'entrée :
var pattern = @"\[(.*?)\]"; var user = "Josh Smith [jsmith]";
L'expression [(.*? )] correspond à un texte commençant par un crochet ouvrant, suivi d'une correspondance non gourmande de n'importe quel caractère entre crochets et se terminant par un crochet fermant.
Lors de l'utilisation de Regex.Matches avec l'entrée ci-dessus, nous obtenons les résultats suivants :
matches.Count == 1 matches[0].Value == "[jsmith]"
Cela est logique, car l'expression régulière correspond à la sous-chaîne "[jsmith]". Cependant, cela vaut la peine de plonger dans la collection Groups :
matches[0].Groups.Count == 2 matches[0].Groups[0].Value == "[jsmith]" matches[0].Groups[1].Value == "jsmith"
Ici, Groups[0] représente l'intégralité du match, y compris les crochets. Groups[1] contient le texte entre crochets, qui est "jsmith" dans ce cas. L'expression régulière comprend un groupe de capture identifié par (.*?) qui capture les caractères entre crochets. Cela explique pourquoi Groups[1] renvoie "jsmith".
Il est important de noter que le nombre de groupes dans la collection Groups dépend de l'expression régulière elle-même. Dans l'exemple ci-dessus, il n'y a qu'un seul groupe de capture, donc Groupes comporte deux éléments : l'intégralité du match et le premier groupe capturé.
Pour illustrer davantage ce concept, considérons un exemple plus complexe :
var pattern = @"\[(.*?)\](.*)"; var match = Regex.Match("ignored [john] John Johnson", pattern);
Dans ce scénario, l'expression régulière correspond au texte entre crochets suivi de tout autre texte. Voici la répartition de la collection Groups :
match.Value == "[john] John Johnson" match.Groups[0].Value == "[john] John Johnson" match.Groups[1].Value == "[john]" match.Groups[2].Value == "John Johnson"
Comme vous pouvez le voir, Groups[1] capture le texte entre le premier jeu de crochets, tandis que Groups[2] capture le texte après les crochets. Les groupes de capture les plus internes peuvent également avoir leurs propres collections Captures. En comprenant les mécanismes des groupes d'expressions régulières, les développeurs peuvent extraire efficacement des informations spécifiques des chaînes de texte à l'aide de ces puissants modèles de correspondance.
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!