Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I följande exempel extraheras ett protokoll och ett portnummer från en URL.
Varning
När du använder System.Text.RegularExpressions för att bearbeta ej betrodda indata skickar du en timeout. En obehörig användare kan ange indata till RegularExpressions
, vilket orsakar en Denial-of-Service-attack. ASP.NET Core Framework-API:er som använder RegularExpressions
passera en timeout.
Exempel
I exemplet används Match.Result metoden för att returnera protokollet följt av ett kolon följt av portnumret.
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
Mönster för ^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/
reguljära uttryck kan tolkas enligt följande tabell.
Mönster | beskrivning |
---|---|
^ |
Börja matchningen i början av strängen. |
(?<proto>\w+) |
Matcha ett eller flera ordtecken. Ge den här gruppen proto namnet . |
:// |
Matcha ett kolon följt av två snedstreck. |
[^/]+? |
Matcha en eller flera förekomster (men så få som möjligt) av andra tecken än ett snedstreck. |
(?<port>:\d+)? |
Matcha noll eller en förekomst av ett kolon följt av ett eller flera tecken. Ge den här gruppen port namnet . |
/ |
Matcha ett snedstreck. |
Metoden Match.Result expanderar ersättningssekvensen ${proto}${port}
, vilket sammanfogar värdet för de två namngivna grupperna som avbildas i mönstret för reguljära uttryck. Det är ett praktiskt alternativ till att explicit sammanfoga strängarna som hämtats från samlingsobjektet som returneras av Match.Groups egenskapen.
I exemplet används Match.Result metoden med två ersättningar, ${proto}
och ${port}
, för att inkludera de insamlade grupperna i utdatasträngen. Du kan hämta de insamlade grupperna från matchningens GroupCollection objekt i stället, som följande kod visar.
Console.WriteLine(m.Groups["proto"].Value + m.Groups["port"].Value);
Console.WriteLine(m.Groups("proto").Value + m.Groups("port").Value)