Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In het volgende voorbeeld worden een protocol en poortnummer uit een URL geëxtraheerd.
Waarschuwing
Wanneer u System.Text.RegularExpressions niet-vertrouwde invoer gebruikt, geeft u een time-out door. Een kwaadwillende gebruiker kan invoer opgeven voor RegularExpressions
een Denial-of-Service-aanval. ASP.NET Core Framework-API's die gebruikmaken van RegularExpressions
een time-out.
Opmerking
In het voorbeeld wordt de Match.Result methode gebruikt om het protocol te retourneren, gevolgd door een dubbele punt gevolgd door het poortnummer.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string url = "http://www.contoso.com:8080/letters/readme.html";
Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
RegexOptions.None, TimeSpan.FromMilliseconds(150));
Match m = r.Match(url);
if (m.Success)
Console.WriteLine(m.Result("${proto}${port}"));
}
}
// The example displays the following output:
// http:8080
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim url As String = "http://www.contoso.com:8080/letters/readme.html"
Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
RegexOptions.None, TimeSpan.FromMilliseconds(150))
Dim m As Match = r.Match(url)
If m.Success Then
Console.WriteLine(m.Result("${proto}${port}"))
End If
End Sub
End Module
' The example displays the following output:
' http:8080
Het reguliere expressiepatroon ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/
kan worden geïnterpreteerd zoals wordt weergegeven in de volgende tabel.
Patroon | Beschrijving |
---|---|
^ |
Begin de overeenkomst aan het begin van de tekenreeks. |
(?<proto>\w+) |
Komt overeen met een of meer woordtekens. Geef deze groep proto een naam. |
:// |
Kom overeen met een dubbele punt gevolgd door twee slashmarkeringen. |
[^/]+? |
Komen overeen met een of meer exemplaren (maar zo weinig mogelijk) van een ander teken dan een slashmarkering. |
(?<port>:\d+)? |
Kom overeen met nul of één exemplaar van een dubbele punt, gevolgd door een of meer cijfertekens. Geef deze groep port een naam. |
/ |
Overeenkomst met een schuine streep. |
De Match.Result methode breidt de ${proto}${port}
vervangingsreeks uit, waarmee de waarde van de twee benoemde groepen wordt samengevoegd die zijn vastgelegd in het reguliere expressiepatroon. Het is een handig alternatief om de tekenreeksen die zijn opgehaald uit het verzamelingsobject dat door de Match.Groups eigenschap wordt geretourneerd, expliciet samen te voegen.
In het voorbeeld wordt de Match.Result methode met twee vervangingen ${proto}
gebruikt en ${port}
worden de vastgelegde groepen opgenomen in de uitvoertekenreeks. U kunt in plaats daarvan de vastgelegde groepen ophalen uit het object van GroupCollection de overeenkomst, zoals in de volgende code wordt weergegeven.
Console.WriteLine(m.Groups["proto"].Value + m.Groups["port"].Value);
Console.WriteLine(m.Groups("proto").Value + m.Groups("port").Value)