Compartilhar via


Como: Extrair um protocolo e o número da porta de uma URL

O exemplo a seguir extrai um número de porta e protocolo de uma URL.

Exemplo

O exemplo usa o Match.Result método para retornar o protocolo, seguido por dois-pontos seguido pelo número de porta.

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim url As String = "https://www.contoso.com:8080/letters/readme.html" 
      Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/")
      Dim m As Match = r.Match(url)
      If m.Success Then
         Console.WriteLine(r.Match(url).Result("${proto}${port}"))
      End If   
   End Sub
End Module
' The example displays the following output:
'       http:8080
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string url = "https://www.contoso.com:8080/letters/readme.html";

      Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/");
      Match m = r.Match(url);
      if (m.Success)
         Console.WriteLine(r.Match(url).Result("${proto}${port}")); 
   }
}
// The example displays the following output:
//       http:8080

O padrão de expressão regular ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/ podem ser interpretados como mostrado na tabela a seguir.

Padrão

Descrição

^

Começa a correspondência no início da seqüência de caracteres.

(?<proto>\w+)

Corresponde a um ou mais caracteres do word. Este grupo proto.

://

Coincide com dois-pontos seguido por duas barras.

[^/]+?

Corresponde a um ou mais ocorrências (mas menor quantidade possível) de qualquer caractere diferente de uma barra diagonal.

(?<port>:\d+)?

Corresponde à ocorrência de zero ou um de dois-pontos seguido por um ou mais caracteres de dígito. Este grupo port.

/

Corresponde a uma barra diagonal.

O Match.Result método expande a ${proto}${port} seqüência de substituição, que concatena o valor dos dois grupos nomeados capturados no padrão de expressão regular. É uma alternativa conveniente para explicitamente concatenar as seqüências de caracteres recuperadas do objeto da coleção retornado pelo Match.Groups propriedade.

O exemplo usa o Match.Result método com duas substituições, ${proto} e ${port}, para incluir os grupos capturados na seqüência de caracteres de saída. Você pode recuperar os grupos capturados da correspondência GroupCollection de objeto em vez disso, como o código a seguir mostra.

Console.WriteLine(m.Groups("proto").Value + m.Groups("port").Value)
Console.WriteLine(m.Groups["proto"].Value + m.Groups["port"].Value); 

Consulte também

Conceitos

Expressões Regulares do .NET Framework