Maison > développement back-end > C++ > le corps du texte

Quelle est la différence entre `matches[0].Value` et `matches[0].Groups[1].Value` dans les expressions régulières C# ?

DDD
Libérer: 2024-11-03 04:15:03
original
213 Les gens l'ont consulté

What's the Difference Between `matches[0].Value` and `matches[0].Groups[1].Value` in C# Regular Expressions?

Comprendre les groupes d'expressions régulières en C

Introduction :
Les expressions régulières jouent un rôle important dans diverses applications de programmation, notamment l'extraction de données et manipulation de texte. Comprendre comment utiliser les groupes d'expressions régulières est essentiel pour exploiter tout leur potentiel en C#.

Comprendre le problème :
Un développeur a hérité d'un bloc de code qui effectue la correspondance d'expressions régulières et est perplexe par les résultats obtenus pour le modèle regex :

var pattern = @"\[(.*?)\]";
Copier après la connexion

Pour la saisie utilisateur "Josh Smith [jsmith]", les résultats semblent simples :

matches[0].Value == "[jsmith]"
Copier après la connexion

Cependant, le développeur est perplexe par le résultat supplémentaire :

matches[0].Groups[1].Value == "jsmith"
Copier après la connexion

Répondre aux questions :

1. Pourquoi "jsmith" correspond-il à matches[0].Groups[1].Value ?
Le modèle d'expression régulière contient un seul groupe de capture, représenté par (.* ?). Ce groupe de capture fait correspondre tous les caractères entre les crochets ouvrants et fermants. Dans ce cas, il capture "jsmith".

2. Combien de groupes les matchs[0].Les groupes seront-ils toujours stockés ?
La collection Groupes stocke généralement deux groupes : le match entier et le dernier match. Cependant, le nombre de groupes peut varier en fonction des groupes de capture spécifiés dans le modèle d'expression régulière.

Explications supplémentaires :

  • match.Groups [0] représente toujours l'intégralité de la correspondance, quel que soit le nombre de groupes de capture.
  • match.Groups[1] représente le groupe de capture qui correspond à la première occurrence de (. *?).
  • match.Groups[1].Captures est une collection d'objets Capture, contenant des captures individuelles au sein du groupe.

Exemple :
Considérons un modèle plus complexe :

var pattern = @"\[(.*?)\](.*)";
Copier après la connexion

Pour l'entrée "ignoré [john] John Johnson" :

  • match.Groups [0].Value est "[john] John Johnson".
  • match.Groups[1].Value est "john".
  • match.Groups[2].Value est " John Johnson ".

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!