Dela via


Tecken rymningar i reguljära uttryck

Omvänt snedstreck (\) i ett reguljärt uttryck anger något av följande:

  • Tecknet som följer är ett specialtecken, som visas i tabellen i följande avsnitt. Är till exempel \b ett fästpunkt som anger att en reguljär uttrycksmatchning ska börja på en ordgräns, \t representerar en flik och \x020 representerar ett blanksteg.

  • Ett tecken som annars skulle tolkas som en icke kapslade språkkonstruktion bör tolkas bokstavligen. Till exempel börjar en klammerparentes ({) definitionen av en kvantifierare, men ett omvänt snedstreck följt av en klammerparentes (\{) anger att motorn för reguljära uttryck ska matcha klammerparentesen. På samma sätt markerar ett enda omvänt snedstreck början på en escape-språkkonstruktion, men två omvänt snedstreck (\\) indikerar att motorn för reguljära uttryck ska matcha omvänt snedstreck.

Kommentar

Teckenutrymningar identifieras i reguljära uttrycksmönster men inte i ersättningsmönster.

Tecken rymningar i .NET

I följande tabell visas de tecken som stöds av reguljära uttryck i .NET.

Tecken eller sekvens beskrivning
Alla tecken förutom följande:

. $ ^ { [ ( | ) * + ? \
Andra tecken än de som anges i kolumnen Tecken eller sekvens har ingen särskild betydelse i reguljära uttryck. De matchar sig själva.

Tecknen som ingår i kolumnen Tecken eller sekvens är särskilda språkelement för reguljära uttryck. Om du vill matcha dem i ett reguljärt uttryck måste de vara undantagna eller inkluderas i en positiv teckengrupp. Till exempel matchar det reguljära uttrycket \$\d+ eller [$]\d+ "$1200".
\a Matchar ett klocktecken (larm) , \u0007.
\b I en [character_group] teckenklass matchar en backspace, \u0008. (Se Teckenklasser.) Utanför en teckenklass \b är en fästpunkt som matchar en ordgräns. (Se Fästpunkter.)
\t Matchar en flik, \u0009.
\r Matchar en vagnretur, \u000D. Observera att \r inte motsvarar det nya radtecknet, \n.
\v Matchar en lodrät flik, \u000B.
\f Matchar ett formulärflöde, \u000C.
\n Matchar en ny rad, \u000A.
\e Matchar en escape, \u001B.
\nnn Matchar ett ASCII-tecken, där nnn består av två eller tre siffror som representerar den oktala teckenkoden. Representerar till exempel \040 ett blankstegstecken. Den här konstruktionen tolkas som en backreference om den bara har en siffra (till exempel \2) eller om den motsvarar antalet avbildningsgrupper. (Se Backreference-konstruktioner.)
\xnn Matchar ett ASCII-tecken, där nn är en tvåsiffrig hexadecimal teckenkod.
\cX Matchar ett ASCII-kontrolltecken, där X är bokstaven i kontrolltecknet. Till exempel \cC är CTRL-C.
\unnnn Matchar en UTF-16-kodenhet vars värde är nnnn hexadecimalt. Obs! Den 5-teckensrymning perl som används för att ange Unicode stöds inte av .NET. Teckenrymningen Perl 5 har formatet \x{####…}, där #### är en serie hexadecimala siffror. Använd \ui stället nnnn.
\ När det följs av ett tecken som inte känns igen som ett undantaget tecken matchar det tecknet. Matchar till exempel \* en asterisk (*) och är samma som \x2A.

Ett exempel

I följande exempel visas användningen av tecken som rymningar i ett reguljärt uttryck. Den parsar en sträng som innehåller namnen på världens största städer och deras befolkningar 2009. Varje ortnamn avgränsas från dess befolkning med en flik (\t) eller en lodrät stapel (| eller \u007c). Enskilda städer och deras befolkningar separeras från varandra med en vagnretur och linjematning.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
      string input = "Mumbai, India|13,922,125\t\n" +
                            "Shanghai, China\t13,831,900\n" +
                            "Karachi, Pakistan|12,991,000\n" +
                            "Delhi, India\t12,259,230\n" +
                            "Istanbul, Türkiye|11,372,613\n";
      Console.WriteLine("Population of the World's Largest Cities, 2009");
      Console.WriteLine();
      Console.WriteLine("{0,-20} {1,10}", "City", "Population");
      Console.WriteLine();
      foreach (Match match in Regex.Matches(input, delimited))
         Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value,
                                            match.Groups[2].Value);
   }
}
// The example displays the following output:
//       Population of the World's Largest Cities, 2009
//
//       City                 Population
//
//       Mumbai, India        13,922,125
//       Shanghai, China      13,831,900
//       Karachi, Pakistan    12,991,000
//       Delhi, India         12,259,230
//       Istanbul, Türkiye     11,372,613
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n"
        Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _
                              "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _
                              "Karachi, Pakistan|12,991,000" + vbCrLf + _
                              "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _
                              "Istanbul, Türkiye|11,372,613" + vbCrLf
        Console.WriteLine("Population of the World's Largest Cities, 2009")
        Console.WriteLine()
        Console.WriteLine("{0,-20} {1,10}", "City", "Population")
        Console.WriteLine()
        For Each match As Match In Regex.Matches(input, delimited)
            Console.WriteLine("{0,-20} {1,10}", match.Groups(1).Value, _
                                               match.Groups(2).Value)
        Next
    End Sub
End Module
' The example displays the following output:
'       Population of the World's Largest Cities, 2009
'       
'       City                 Population
'       
'       Mumbai, India        13,922,125
'       Shanghai, China      13,831,900
'       Karachi, Pakistan    12,991,000
'       Delhi, India         12,259,230
'       Istanbul, Türkiye     11,372,613

Det reguljära uttrycket \G(.+)[\t\u007c](.+)\r?\n tolkas som det visas i följande tabell.

Mönster beskrivning
\G Börja matchen där den senaste matchen slutade.
(.+) Matcha ett eller flera tecken en eller flera gånger. Det här är den första insamlingsgruppen.
[\t\u007c] Matcha en flik (\t) eller ett lodrätt fält (|).
(.+) Matcha ett eller flera tecken en eller flera gånger. Det här är den andra insamlingsgruppen.
\r?\n Matcha noll eller en förekomst av en vagnretur följt av en ny rad.

Se även