Regex.GetGroupNumbers Metodo

Definizione

Restituisce una matrice di numeri di gruppi di acquisizione che corrispondono ai nomi dei gruppi in una matrice.

C#
public int[] GetGroupNumbers();

Restituisce

Int32[]

Matrice di interi di numeri di gruppi.

Esempio

Nell'esempio seguente viene definita un'espressione regolare, \b((?<word>\w+)\s*)+(?<end>[.?!]), che corrisponde a una frase. L'espressione regolare include tre gruppi di acquisizione: un gruppo senza nome che acquisisce una singola parola insieme a un carattere di spazio che può seguirlo; un gruppo denominato word che acquisisce le singole parole nella frase e un gruppo denominato end che acquisisce la punteggiatura che termina la frase. Nell'esempio viene chiamato il GetGroupNumbers metodo per ottenere i numeri di tutti i gruppi di acquisizione e quindi viene visualizzata la stringa acquisita. Inoltre, il GroupNameFromNumber metodo viene usato per indicare se un determinato gruppo numerato corrisponde a un gruppo denominato.

C#
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b((?<word>\w+)\s*)+(?<end>[.?!])";
      string input = "This is a sentence. This is a second sentence.";
      
      Regex rgx = new Regex(pattern);
      int[] groupNumbers = rgx.GetGroupNumbers();
      Match m = rgx.Match(input);
      if (m.Success) {
         Console.WriteLine("Match: {0}", m.Value);
         foreach (var groupNumber in groupNumbers) {
            string name = rgx.GroupNameFromNumber(groupNumber);
            int number;
            Console.WriteLine("   Group {0}{1}: '{2}'", 
                              groupNumber, 
                              ! string.IsNullOrEmpty(name) & 
                              ! Int32.TryParse(name, out number) ?
                                 " (" + name + ")" : String.Empty, 
                              m.Groups[groupNumber].Value);
         }
      } 
   }
}
// The example displays the following output:
//       Match: This is a sentence.
//          Group 0: 'This is a sentence.'
//          Group 1: 'sentence'
//          Group 2 (word): 'sentence'
//          Group 3 (end): '.'

Il criterio di ricerca di espressioni regolari viene interpretato come illustrato nella tabella seguente.

Modello Descrizione
\b Inizia la corrispondenza sul confine di parola.
(?<word>\w+) Trova la corrispondenza di uno o più caratteri di parola e assegna le stringhe corrispondenti a un gruppo denominato word.
\s* Trovare la corrispondenza di zero o più spazi vuoti.
((?<word>\w+)\s*) Assegnare il word gruppo acquisito seguito da eventuali caratteri di spazio vuoto acquisiti al primo gruppo acquisito.
((?<word>\w+)\s*)+ Trova la corrispondenza con il modello di uno o più caratteri di parola seguiti da uno o più caratteri di spazio vuoto una o più volte.
(?<end>[.?!]) Trova la corrispondenza di un punto, un punto interrogativo o un punto esclamativo. Assegnare il carattere corrispondente al end gruppo di acquisizione.

Commenti

È possibile accedere sia ai gruppi di acquisizione senza nome che ai gruppi di acquisizione denominati in base al numero. I gruppi senza nome vengono numerati da sinistra a destra a partire da 1. Il gruppo di acquisizione nell'indice 0 (zero) rappresenta la corrispondenza nel suo complesso. I gruppi denominati vengono quindi numerati da sinistra a destra a partire da un numero maggiore del numero di gruppi di acquisizione senza nome.

Fare riferimento a un gruppo in base al numero anziché in base al nome stringa può fornire un accesso più rapido.

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche