Freigeben über


Gewusst wie: Extrahieren eines Protokolls und einer Anschlussnummer aus einem URL

Im folgenden Beispiel wird eine Protokoll- und Anschlussnummer aus einer URL extrahiert.

Beispiel

Mit der Match.Result-Methode wird das Protokoll gefolgt von einem Doppelpunkt und der Anschlussnummer zurückgegeben.

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

Der Muster des regulären Ausdrucks ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/ kann wie in der folgenden Tabelle gezeigt interpretiert werden.

Muster

Beschreibung

^

Starten Sie den Vergleich am Beginn der Zeichenfolge.

(?<proto>\w+)

Entsprechung für mindestens ein Wortzeichen finden. Geben Sie proto als Namen für diese Gruppe ein.

://

Entsprechung für einen Doppelpunkt finden, auf den zwei Schrägstriche folgen.

[^/]+?

Entsprechung für eines oder mehrere Vorkommen eines Zeichens (jedoch so wenige wie möglich) mit Ausnahme des Schrägstrichs finden.

(?<port>:\d+)?

Entsprechung für keines oder ein Vorkommen eines Doppelpunkts finden, auf den eines oder mehrere Ziffernzeichen folgen. Geben Sie port als Namen für diese Gruppe ein.

/

Entsprechung für einen Schrägstrich finden.

Die Match.Result-Methode erweitert die Ersatzzeichenfolge ${proto}${port}, die den Wert der zwei benannten Gruppen verkettet, die im Muster des regulären Ausdrucks erfasst werden. Dies stellt eine praktische Alternative zum expliziten Verknüpfen der Zeichenfolgen dar, die aus dem Auflistungsobjekt abgerufen werden, das von der Match.Groups-Eigenschaft zurückgegeben wird.

Im Beispiel wird die Match.Result-Methode mit zwei Ersetzungen, ${proto} und ${port}, verwendet, um die erfassten Gruppen in die Ausgabezeichenfolge einzuschließen. Sie können die erfassten Gruppen wie im folgenden Code dargestellt stattdessen aus dem GroupCollection-Objekt der Übereinstimmung abrufen.

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

Siehe auch

Konzepte

Reguläre Ausdrücke von .NET Framework