Escapezeichen
Der umgekehrte Schrägstrich (\) in einem regulären Ausdruck gibt eins der Folgenden an:
Das Zeichen, das darauf folgt, ist ein Sonderzeichen, wie in der Tabelle im folgenden Abschnitt gezeigt. \b ist z. B. ein Anker, der angibt, dass die Übereinstimmung eines regulären Ausdrucks mit einer Wortgrenze beginnen sollte, \t stellt einen Tabulator dar, und \x020 stellt ein Leerzeichen dar.
Ein Zeichen, das andernfalls als Sprachkonstrukt ohne Escapezeichen interpretiert werden würde, sollte wörtlich interpretiert werden. Eine geschweifte Klammer ({) beginnt z. B. die Definition eines Quantifizierers, aber ein von einer geschweiften Klammer (\{) gefolgter umgekehrter Schrägstrich gibt an, dass das Modul für reguläre Ausdrücke eine Entsprechung für die geschweifte Klammer finden sollte. Auf ähnliche Weise markiert ein einzelner umgekehrter Schrägstrich den Anfang eines Sprachkonstrukts mit Escapezeichen, aber zwei umgekehrte Schrägstriche (\\) geben an, dass das Modul für reguläre Ausdrücke eine Entsprechung für den umgekehrten Schrägstrich finden soll.
Hinweis |
---|
Die in der folgenden Tabelle aufgelisteten Escapezeichen werden in Mustern von regulären Ausdrücken, jedoch nicht in Ersetzungsmustern erkannt. |
Escapezeichen in .NET Framework
In der folgenden Tabelle sind die Escapezeichen aufgeführt, die von regulären .NET Framework-Ausdrücken unterstützt werden.
Zeichen oder Sequenz |
Beschreibungen |
---|---|
Alle Zeichen außer Folgenden: . $ ^ { [ ( | ) * + ? \ |
Diese Zeichen haben keine besonderen Bedeutungen in regulären Ausdrücken; sie finden eine Entsprechung für sich selbst. |
\a |
Entspricht dem Klingelzeichen (Warnsignal) \u0007. |
\b |
Entspricht in einer [Zeichengruppe]-Zeichenklasse einem Rückschritt (\u0008). (Weitere Informationen finden Sie unter Zeichenklassen.) Außerhalb einer Zeichenklasse ist \b ein Anker, der einer Wortgrenze entspricht. (Weitere Informationen finden Sie unter Anker in regulären Ausdrücken.) |
\t |
Entspricht dem Tabstoppzeichen \u0009. |
\r |
Entspricht dem Wagenrücklaufzeichen \u000D. \r ist nicht mit dem Zeilenumbruchzeichen ( \n) identisch. |
\v |
Entspricht dem vertikalen Tabstoppzeichen \u000B. |
\f |
Entspricht dem Seitenvorschubzeichen \u000C. |
\n |
Entspricht der neuen Zeile \u000A. |
\e |
Entspricht dem Escapezeichen \u001B. |
\nnn |
Findet eine Entsprechung für ein ASCII-Zeichen, wobei nnn aus bis zu drei Ziffern besteht, die den oktalen Zeichencode darstellen. Beispielsweise stellt \040 ein Leerzeichen dar. Dieses Konstrukt wird jedoch als Rückverweis interpretiert, wenn es nur eine Ziffer (z. B. \2) hat oder wenn es der Nummer einer Erfassungsgruppe entspricht. (Weitere Informationen finden Sie unter Rückverweiskonstrukte.) |
\xnn |
Findet eine Entsprechung für ein ASCII-Zeichen, wobei nn ein zweistelliger Hexadezimalzeichencode ist. |
\cX |
Entspricht einem ASCII-Steuerzeichen, wobei X der Buchstabe des Steuerzeichens ist. Beispielsweise ist \cC STRG+C. |
\unnnn |
Entspricht einem Unicode-Zeichen, wobei nnnn, wobei nnnn als vier hexadezimale Ziffern dargestellter Codepunkt ist.
Hinweis
Die Perl 5-Escape-Zeichen, die angeben, dass Unicode von .NET Framework nicht unterstützt wird.Das Perl 5-Escape-Zeichen hat das Format \x{####…}, wobei ####… einer Reihe von Hexadezimalziffern entspricht.Verwenden Sie stattdessen \unnnn.
|
\ |
Wird dieses Zeichen von einem Zeichen gefolgt, das nicht als Escapezeichen erkannt wird, entspricht es diesem Zeichen. \* entspricht beispielsweise einem Sternchen (*) und ist gleich \x2A. |
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung von Escapezeichen in einem regulären Ausdruck. Es analysiert eine Zeichenfolge, die die Namen der größten Orten der Welt und ihre Bevölkerungen in 2009 enthält. Jeder Ortsname wird durch ein Tabstoppzeichen (\t) oder einen senkrechten Strich (| oder \u007c) von seiner Einwohnerzahl getrennt. Einzelne Orte und ihre Einwohnerzahlen werden durch einen Wagenrücklauf und einen Zeilenvorschub von einander getrennt.
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 + _
"Dehli, India" + vbTab + "12,259,230" + vbCrLf + _
"Istanbul, Turkey|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
' Dehli, India 12,259,230
' Istanbul, Turkey 11,372,613
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" +
"Dehli, India\t12,259,230\n" +
"Istanbul, Turkey|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 displyas 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
// Dehli, India 12,259,230
// Istanbul, Turkey 11,372,613
Der reguläre Ausdruck \G(.+)[\t|\u007c](.+)\r?\n wird entsprechend der Darstellung in der folgenden Tabelle interpretiert.
Muster |
Beschreibungen |
---|---|
\G |
Beginnen Sie den Abgleich an der Stelle, wo der letzte Abgleich geendet hat. |
(.+) |
Entspricht einem oder mehreren beliebigen Zeichen. Dies ist die erste Erfassungsgruppe. |
[\t\u007c] |
Entsprechung für einen Tabulator (\t) oder einen senkrechten Strich (|). |
(.+) |
Entspricht einem oder mehreren beliebigen Zeichen. Dies ist die zweite Erfassungsgruppe. |
\r? \n |
Entspricht 0 (null) oder einem Vorkommen des Wagenrücklaufs, gefolgt von einer neuen Zeile. |
Siehe auch
Konzepte
Sprachelemente für reguläre Ausdrücke
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Mai 2010 |
Das reguläre Ausdrucksmuster wurde korrigiert. |
Kundenfeedback. |