Quelle est la différence entre un groupe et le match dans .NET de la RegEx?

StackOverflow https://stackoverflow.com/questions/29088

  •  09-06-2019
  •  | 
  •  

Question

Quelle est la différence entre un Groupe et un Match dans .NET de la RegEx?

Était-ce utile?

La solution

Un Match est un objet qui indique que l'expression régulière adaptée (une partie de) le texte cible.Un Groupe indique qu'une partie d'un match, si l'origine de l'expression régulière contenues groupe de marqueurs (en fait un modèle entre parenthèses).Par exemple, avec le code suivant:

string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
Match m = r.Match(text);

m serait il corresponde à l'objet qui contient deux groupes - groupe 1, à partir de (\w+), et qui a capturé "Un", et le groupe 2 (à partir de (car)) qui correspond à, eh bien, "voiture".

Autres conseils

Un Match est une partie d'une chaîne qui correspond à l'expression régulière, et il ne peut donc être correspondances multiples au sein d'une chaîne.

À l'intérieur d'un Match, vous pouvez définir des groupes, que ce soit anonyme ou nommé, pour le rendre plus facile de diviser un match.Un exemple simple est de créer une regex à la recherche pour les Url, puis utiliser des groupes à l'intérieur pour trouver le protocole (http), le domaine (www.web.com), chemin (/lol/cats.html) et les arguments, et ce n'est pas.

// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"

Un seul modèle peut être trouvé à plusieurs reprises à l'intérieur d'une chaîne, comme je l'ai dit, donc si vous utilisez des Regex.Les Matches(string texte), vous recevrez des correspondances multiples, composés chacun de zéro, un ou plusieurs groupes.

Ces groupes cités peuvent être trouvés par l'indexation par un nombre ou une chaîne.L'exemple ci-dessus peut être utilisée comme ceci:

Match match = pattern.Match(urls);
if (!match.Success) 
    continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;

Pour rendre les choses encore plus intéressantes, un groupe pourrait être comparée à de multiples reprises, mais je recommande de commencer la lecture de la la documentation.

Vous pouvez également utiliser des groupes de générer des références arrières, et de façon partielle de recherche et de remplacement, mais lisez plus sur MSDN.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top