Condividi tramite


Procedura: estrarre un protocollo e un numero di porta da un URL

Nell'esempio seguente vengono estratti un protocollo e un numero di porta da un URL.

Esempio

Nell'esempio viene utilizzato il metodo Match.Result per restituire il protocollo seguito da due punti seguiti dal numero di 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

Il modello di espressione regolare ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/ può essere interpretato come illustrato nella tabella seguente.

Modello

Descrizione

^

Iniziare la ricerca della corrispondenza all'inizio della stringa.

(?<proto>\w+)

Trova la corrispondenza di uno o più caratteri alfanumerici. Assegnare al gruppo il nome proto.

://

Trovare la corrispondenza di due punti seguiti da due barre.

[^/]+?

Trovare la corrispondenza di una o più occorrenze (ma il minor numero possibile) di qualsiasi carattere diverso da una barra.

(?<port>:\d+)?

Trovare la corrispondenza di zero o una occorrenza di due punti seguiti da una o più cifre. Assegnare al gruppo il nome port.

/

Trovare la corrispondenza di una barra.

Il metodo Match.Result espande la sequenza di sostituzione ${proto}${port} che concatena il valore dei due gruppi denominati acquisiti nel modello di espressione regolare. Si tratta di una comoda alternativa alla concatenazione esplicita delle stringhe recuperate dall'oggetto Collection restituito dalla proprietà Match.Groups.

Nell'esempio viene utilizzato il metodo Match.Result con due sostituzioni, ${proto} e ${port}, per includere i gruppi acquisiti nella stringa di output. È possibile invece recuperare i gruppi acquisiti dall'oggetto GroupCollection della corrispondenza, come viene illustrato dal codice seguente.

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

Vedere anche

Concetti

Espressioni regolari di .NET Framework