Compartir a través de


Cómo: Extraer un protocolo y un número de puerto de una dirección URL

En el ejemplo siguiente se extrae un protocolo y un número de puerto de una dirección URL.

Ejemplo

En el ejemplo se usa el método Match.Result para devolver el protocolo seguido por un signo de dos puntos y seguido a su vez por el número de puerto.

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

El modelo de expresión regular ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/ se puede interpretar como se muestra en la tabla siguiente.

Modelo

Descripción

^

Comenzar la búsqueda de coincidencia en el principio de la cadena.

(?<proto>\w+)

Busca coincidencias con uno o más caracteres alfabéticos. Denominar a este grupo proto.

://

Buscar una coincidencia con un signo dos puntos seguido por dos barras diagonales.

[^/]+?

Buscar una coincidencia con una o más apariciones (pero las mínimas posibles) de cualquier carácter distinto de una barra diagonal.

(?<port>:\d+)?

Buscar una coincidencia con cero o una aparición de un signo de dos puntos seguida por uno o más caracteres de dígito. Denominar a este grupo port.

/

Buscar una coincidencia con una barra diagonal.

El método Match.Result expande la secuencia de reemplazo ${proto}${port}, que concatena el valor de los dos grupos con nombre capturados en el modelo de expresión regular. Se trata de una alternativa adecuada a concatenar explícitamente las cadenas recuperadas del objeto de colección devueltas por la propiedad Match.Groups.

En el ejemplo, se utiliza el método Match.Result con dos sustituciones, ${proto} y ${port}, para incluir los grupos capturados en la cadena de salida. Los grupos capturados se pueden recuperar del objeto GroupCollection de la coincidencia, tal y como se muestra en el siguiente código.

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

Vea también

Conceptos

Expresiones regulares de .NET Framework