Řídící znaky
Zpětné lomítko (\) v regulárním výrazu označuje jedno z následujících:
Znak, který jej následuje je speciální znak, jak je uvedeno v tabulce v následujícím oddílu. Například \b je kotva, která označuje, že shoda regulárního výrazu by měla začínat na hranici slova, \t představuje tabulátor, a \x020 představuje mezeru.
Znak, který by byl jinak interpretován jako jazyková konstrukce, která není řídící by měl být interpretován doslovně. Například složená závorka ({) začíná definici kvantifikátoru, ale zpětné lomítko následované složenou závorkou (\{) označuje, že modul regulárních výrazů by měl porovnávat složenou závorku. Podobně jedno zpětné lomítko označuje začátek konstrukce jazyka ukončený, ale dvě zpětná lomítka (\\) označuje, že by měl odpovídat motoru regulárního výrazu zpětné lomítko.
![]() |
---|
Řídící znaky jsou rozpoznávány ve vzorcích regulárních výrazů, ale nikoli ve vzorcích pro nahrazení. |
Řídíci znaky v rozhraní .NET Framework
V následující tabulce jsou uvedeny řídící znaky podporované regulárními výrazy v rozhraní .NET Framework.
Znak nebo sekvence |
Popis |
---|---|
Všechny znaky kromě následujících: . $ ^ { [ ( | ) * + ? \ |
Tyto znaky mají v regulárních výrazech; žádný speciální význam odpovídají samy. |
\a |
Odpovídá znaku zvonku (alarm) \u0007. |
\b |
Ve třídě znaků [character_group], odpovídá znaku backspace, \u0008. (See Třídy znaků.) Mimo třídu znaků je kotva \b, která odpovídá hranici slova. (See Kotvy v regulárních výrazech.) |
\t |
Odpovídá znaku tab \u0009. |
\r |
Odpovídá návratu na začátek řádku \u000D. Všimněte si, že \r není ekvivalentní se znakem nového řádku \n. |
\v |
Odpovídá vertikálnímu tabelátoru \u000B. |
\f |
Odpovídá posunu stránky \u000C. |
\n |
Odpovídá novému řádku, \u000A. |
\e |
Odpovídá escape, \u001B. |
\nnn |
Odpovídá znaku ASCII, kde nnn se skládá z až tří číslic představujících osmičkový kód znaku. Například \040 představuje znak mezery. Avšak tato konstrukce je interpretována jako zpětný odkaz v případě, že má pouze jednu číslici (například \2) nebo v případě, že odpovídá číslu zachytávající skupiny. (See Konstrukce zpětných odkazů.) |
\xmm |
Odpovídá znaku ASCII kde nn je dvouciferný šestnáctkový kód znaku. |
\cX |
Odpovídá řídícímu znaku ASCII, kde X je písmeno řídicího znaku. Například \cC je CTRL-C. |
\unnnn |
Odpovídá znaku Unicode, kde nnnn je čtyřmístný hexadecimální kódový bod. ![]()
Znak escape z Perl 5, používaný k určení Unicode, není podporován rozhraním .NET Framework.Znak escape z Perl 5 má formát \x{####…}, kde ####… je řada šestnáctkových číslic.Místo toho použijte \unnnn.
|
\ |
V případě, že následuje znak, který nebyl rozpoznán jako řídící znak, je porovnáván tento znak. Například \* odpovídá hvězdičce * a je to stejné jako \x2A. |
Příklad.
Následující příklad ukazuje použití řídících znaků v regulárním výrazu. Analyzuje řetězec, který obsahuje názvy největších měst na světě a počty jejich obyvatel v roce 2009. Každé město je oddělena od obyvatelstva kartu (\t) nebo svislou čáru (| nebo \u007c). Jednotlivá města a počty jejich obyvatel jsou odděleny od sebe návratem na začátek řádku a novým řádkem.
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
Regulární výraz \G(.+)[\t|\u007c](.+)\r?\n je interpretovat podle následující tabulky.
Maska |
Popis |
---|---|
\G |
Začíná porovnávání tam, kde poslední skončila poslední shoda. |
(.+) |
Porovná jeden nebo více výskytů libovolného znaku. Toto je první zachytávající skupina. |
[\t\u007c] |
Odpovídající kartu (\t) nebo svislou čáru (|). |
(.+) |
Porovná jeden nebo více výskytů libovolného znaku. Toto je druhá zachytávající skupina. |
\r? \n |
Odpovídat žádný nebo jeden výskyt carriage return následovaný nový řádek. |
Viz také
Koncepty
Prvky jazyka regulárních výrazů
Historie změn
Datum |
Poslední dokumenty |
Důvod |
---|---|---|
Květen 2010 |
Opraven vzorce regulárního výrazu. |
Názory zákazníků |