Regex.GroupNameFromNumber(Int32) Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém o nome do grupo que corresponde ao número do grupo especificado.
public:
System::String ^ GroupNameFromNumber(int i);
public string GroupNameFromNumber(int i);
member this.GroupNameFromNumber : int -> string
Public Function GroupNameFromNumber (i As Integer) As String
- i
- Int32
O número do grupo a ser convertido para o nome de grupo correspondente.
Uma cadeia de caracteres que contém o nome de grupo associado ao número de grupo especificado. Se não houver nenhum nome de grupo que corresponda a i
, o método retornará Empty.
O exemplo a seguir define um padrão de expressão regular que corresponde a uma linha de endereço que contém um nome da cidade dos EUA, um nome de estado e um cep. O exemplo usa o GroupNameFromNumber método para recuperar os nomes dos grupos de captura. Em seguida, ele usa esses nomes para recuperar os grupos capturados correspondentes para correspondências.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)";
string[] cityLines = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204",
"San Francisco, CA 94109", "Seattle, WA 98109" };
Regex rgx = new Regex(pattern);
List<string> names = new List<string>();
int ctr = 1;
bool exitFlag = false;
// Get group names.
do {
string name = rgx.GroupNameFromNumber(ctr);
if (!String.IsNullOrEmpty(name))
{
ctr++;
names.Add(name);
}
else
{
exitFlag = true;
}
} while (!exitFlag);
foreach (string cityLine in cityLines)
{
Match match = rgx.Match(cityLine);
if (match.Success)
Console.WriteLine("Zip code {0} is in {1}, {2}.",
match.Groups[names[3]],
match.Groups[names[1]],
match.Groups[names[2]]);
}
}
}
// The example displays the following output:
// Zip code 10003 is in New York, NY.
// Zip code 11238 is in Brooklyn, NY.
// Zip code 48204 is in Detroit, MI.
// Zip code 94109 is in San Francisco, CA.
// Zip code 98109 is in Seattle, WA.
Imports System.Collections.Generic
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)"
Dim cityLines() As String = {"New York, NY 10003", "Brooklyn, NY 11238", "Detroit, MI 48204", _
"San Francisco, CA 94109", "Seattle, WA 98109" }
Dim rgx As New Regex(pattern)
Dim names As New List(Of String)
Dim ctr As Integer = 1
Dim exitFlag As Boolean = False
' Get group names.
Do
Dim name As String = rgx.GroupNameFromNumber(ctr)
If Not String.IsNullOrEmpty(name) Then
ctr += 1
names.Add(name)
Else
exitFlag = True
End If
Loop While Not exitFlag
For Each cityLine As String In cityLines
Dim match As Match = rgx.Match(cityLine)
If match.Success Then
Console.WriteLine("Zip code {0} is in {1}, {2}.", _
match.Groups.Item(names.Item(3)), _
match.Groups.Item(names.Item(1)), _
match.Groups.Item(names.Item(2)))
End If
Next
End Sub
End Module
' The example displays the following output:
' Zip code 10003 is in New York, NY.
' Zip code 11238 is in Brooklyn, NY.
' Zip code 48204 is in Detroit, MI.
' Zip code 94109 is in San Francisco, CA.
' Zip code 98109 is in Seattle, WA.
O padrão de expressão regular é definido pela seguinte expressão:
(?<city>[A-Za-z\s]+), (?<state>[A-Za-z]{2}) (?<zip>\d{5}(-\d{4})?)
A tabela a seguir mostra como o padrão da expressão regular é interpretado.
Padrão | Descrição |
---|---|
(?<city>[A-Za-z\s]+) |
Corresponde a um ou mais caracteres alfabéticos ou de espaço em branco. Atribua a esse grupo capturado o nome city . |
, |
Corresponder a uma vírgula (,) seguida por um caractere de espaço em branco. |
(?<state>[A-Za-z]{2}) |
Corresponde a dois caracteres alfabéticos. Atribua a esse grupo capturado o nome state . Esse grupo deve ser seguido por um caractere de espaço em branco. |
(?<zip>\d{5}(-\d{4})?) |
Corresponde a cinco dígitos numéricos seguidos por zero ou uma ocorrência de um hífen seguido por quatro dígitos. Atribua a esse grupo capturado o nome zip . |
Um padrão de expressão regular pode conter grupos de captura nomeados ou numerados, que delineam subexpressões dentro de uma correspondência de padrão. Os grupos numerados são delimitados pela sintaxe (subexpressão) e são atribuídos números com base em sua ordem na expressão regular. Os grupos nomeados são delimitados pela sintaxe (?<
Nome>
subexpression) ou (?' name'subexpression), em que name é o nome pelo qual a subexpressão será identificada. (Para obter mais informações, consulte Construções de agrupamento.) O GroupNameFromNumber método identifica grupos nomeados e grupos numerados por suas posições ordinais na expressão regular. A posição ordinal zero sempre representa toda a expressão regular. Todos os grupos numerados são contados antes dos grupos nomeados, independentemente de sua posição real no padrão de expressão regular.
Se i
for o número de um grupo nomeado, o método retornará o nome do grupo. Se i
for o número de um grupo sem nome, o método retornará a representação de cadeia de caracteres do número. Por exemplo, se i
for 1, o método retornará "1". Se i
não for o número de um grupo de captura, o método retornará String.Empty.
Se uma correspondência de padrão for encontrada, o valor retornado por esse método poderá ser usado para recuperar o Group objeto que representa o grupo capturado da GroupCollection.Item[] propriedade . O GroupCollection objeto é retornado pela Match.Groups propriedade .
Produto | Versões |
---|---|
.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 |
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: