Escape-знаки в регулярных выраженияхCharacter Escapes in Regular Expressions

Обратная косая черта (\) в регулярном выражении может означать следующее.The backslash (\) in a regular expression indicates one of the following:

  • Следующий за ней символ является специальным, как показано в таблице в следующем разделе.The character that follows it is a special character, as shown in the table in the following section. Например, \b — это привязка, указывающая, что сопоставление регулярного выражения должно начинаться на границе слова, \t представляет знак табуляции, а \x020 соответствует пробелу.For example, \b is an anchor that indicates that a regular expression match should begin on a word boundary, \t represents a tab, and \x020 represents a space.

  • Символ, который в противном случае интерпретировался бы как неэкранированная языковая конструкция, следует интерпретировать буквально.A character that otherwise would be interpreted as an unescaped language construct should be interpreted literally. Например, с фигурной скобки ({) начинается определение квантификатора, однако обратная косая черта, за которой следует фигурная скобка, (\{) указывает, что обработчик регулярных выражений должен искать саму фигурную скобку.For example, a brace ({) begins the definition of a quantifier, but a backslash followed by a brace (\{) indicates that the regular expression engine should match the brace. Аналогичным образом, одиночная обратная косая черта служит escape-символом, отмечающим начало языковой конструкции, а две обратные косые черты (\\) указывают, что обработчик регулярных выражений должен поставить им в соответствие обратную косую черту.Similarly, a single backslash marks the beginning of an escaped language construct, but two backslashes (\\) indicate that the regular expression engine should match the backslash.

Примечание

Escape-символы распознаются в шаблонах регулярных выражений, но не в шаблонах замены.Character escapes are recognized in regular expression patterns but not in replacement patterns.

Escape-знаки в NETCharacter Escapes in .NET

В таблице ниже перечислены escape-последовательности, поддерживаемые регулярными выражениями в .NET.The following table lists the character escapes supported by regular expressions in .NET.

Символ или последовательностьCharacter or sequence ОПИСАНИЕDescription
Все символы, за исключением следующих:All characters except for the following:

.. $ ^ { [ ( | ) * + ?$ ^ { [ ( | ) * + ? \
Символы, не перечисленные в столбце Символ или последовательность, не имеют особого значения в регулярных выражениях и соответствуют сами себе.Characters other than those listed in the Character or sequence column have no special meaning in regular expressions; they match themselves.

Символы, включенные в столбец Символ или последовательность, являются специальными языковыми элементами регулярных выражений.The characters included in the Character or sequence column are special regular expression language elements. Для сопоставления с ними в регулярном выражении их необходимо экранировать или включить в положительную группу символов.To match them in a regular expression, they must be escaped or included in a positive character group. Например, регулярное выражение \$\d+ или [$]\d+ соответствует "$1200".For example, the regular expression \$\d+ or [$]\d+ matches "$1200".
\a Соответствует символу колокольчика (будильника), \u0007.Matches a bell (alarm) character, \u0007.
\b В классе символов [character_group] соответствует символу возврата на одну позицию назад с удалением символа (BACKSPACE), \u0008.In a [character_group] character class, matches a backspace, \u0008. (См. раздел Классы символов.) За пределами класса символов \b является привязкой, соответствующей границе слова.(See Character Classes.) Outside a character class, \b is an anchor that matches a word boundary. (См. раздел Привязки.)(See Anchors.)
\t Соответствует знаку табуляции, \u0009.Matches a tab, \u0009.
\r Соответствует знаку возврата каретки, \u000D.Matches a carriage return, \u000D. Учтите, что \r не эквивалентно символу новой строки \n.Note that \r is not equivalent to the newline character, \n.
\v Соответствует знаку вертикальной табуляции, \u000B.Matches a vertical tab, \u000B.
\f Соответствует знаку перевода страницы, \u000C.Matches a form feed, \u000C.
\n Соответствует знаку новой строки, \u000A.Matches a new line, \u000A.
\e Соответствует escape-символу, \u001B.Matches an escape, \u001B.
\ nnn\ nnn Соответствует символу ASCII, где nnn может содержать две или три цифры, представляющие восьмеричный код символа.Matches an ASCII character, where nnn consists of two or three digits that represent the octal character code. Например, \040 соответствует символу пробела.For example, \040 represents a space character. Эта конструкция интерпретируется как обратная ссылка, если она содержит только одну цифру (например, \2) или соответствует номеру группы записи.This construct is interpreted as a backreference if it has only one digit (for example, \2) or if it corresponds to the number of a capturing group. (См. раздел Конструкции обратных ссылок.)(See Backreference Constructs.)
\x nn\x nn Соответствует символу ASCII, где nn — двузначный шестнадцатеричный код символа.Matches an ASCII character, where nn is a two-digit hexadecimal character code.
\c X\c X Соответствует управляющему символу ASCII, где X — буква управляющего символа.Matches an ASCII control character, where X is the letter of the control character. Например, \cC означает CTRL-C.For example, \cC is CTRL-C.
\u nnnn\u nnnn Соответствует элементу кода UTF-16, значение которого является шестнадцатеричным значением nnnn.Matches a UTF-16 code unit whose value is nnnn hexadecimal. Примечание. Escape-символ Perl 5, который используется для указания Юникода, не поддерживается платформой .NET.Note: The Perl 5 character escape that is used to specify Unicode is not supported by .NET. Escape-символ из Perl 5 имеет форму \x{ #### …}, где ####  — последовательность шестнадцатеричных цифр.The Perl 5 character escape has the form \x{####…}, where #### is a series of hexadecimal digits. Вместо этого используйте \unnnn.Instead, use \unnnn.
\ Со следующим знаком, который не распознается как escape-символ, соответствует этому знаку.When followed by a character that is not recognized as an escaped character, matches that character. Например, \* обозначает звездочку (*) и совпадает с \x2A.For example, \* matches an asterisk (*) and is the same as \x2A.

ПримерAn Example

В приведенном ниже примере показано использование escape-последовательностей в регулярном выражении.The following example illustrates the use of character escapes in a regular expression. В нем анализируется строка, содержащая названия крупнейших городов мира и их население в 2009 г.It parses a string that contains the names of the world's largest cities and their populations in 2009. Название каждого города отделено от его населения символом табуляции (\t) или вертикальной чертой (| или \u007c).Each city name is separated from its population by a tab (\t) or a vertical bar (| or \u007c). Отдельные города и их население разделяются символами возврата каретки и перевода строки.Individual cities and their populations are separated from each other by a carriage return and line feed.

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, 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 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, Turkey     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, 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
'       Delhi, India         12,259,230
'       Istanbul, Turkey     11,372,613

Возможные интерпретации регулярного выражения \G(.+)[\t|\u007c](.+)\r?\n показаны в следующей таблице.The regular expression \G(.+)[\t|\u007c](.+)\r?\n is interpreted as shown in the following table.

ШаблонPattern ОПИСАНИЕDescription
\G Начать сопоставление там, где закончилось последнее соответствие.Begin the match where the last match ended.
(.+) Сопоставление любого символа один или более раз.Match any character one or more times. Это первая группа записи.This is the first capturing group.
[\t\u007c] Соответствует символу табуляции (\t) или вертикальной черте (|).Match a tab (\t) or a vertical bar (|).
(.+) Сопоставление любого символа один или более раз.Match any character one or more times. Это вторая группа записи.This is the second capturing group.
\r?\n Соответствует отсутствию или одному вхождению символа возврата каретки, за которым следует новая строка.Match zero or one occurrence of a carriage return followed by a new line.

См. такжеSee also