Регулярные выражения как язык 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Регулярные выражения как язык



Язык регулярных выражений создан и оптимизирован для работы с текстом. В языке используется два основных типа знаков: обычные текстовые знаки и метасимволы. Своими возможностями регулярные выражения обязаны именно метасимволам.

Распространенными метасимволами являются знаки "?" и "*", которые использовались в файловой системе DOS для представления одиночных знаков или групп знаков. Файловая команда DOS COPY *.DOC A: производит копирование всех файлов с расширением DOC на диск A. Метасимвол "*" здесь обозначает произвольное имя файла, стоящее перед расширением файла DOC. В регулярных выражениях эта концепция была существенно расширена, что привело к формированию обширного набора метасимволов, позволяющих создавать весьма сложные выражения с помощью сравнительно небольшого количества знаков.

Например, при применении регулярного выражения \s2000 к тексту сообщения, будут найдены все вхождения строки "2000", которым предшествует любой пробельный символ, например пробел или табуляция.

Примечание.
При использовании языков C++, C# или JScript специальные escape-знаки, например "\s", необходимо предварять дополнительной обратной косой чертой (например, "\\s2000"), чтобы указать на то, что обратная косая черта в escape-знаке является литеральным знаком. В противном случае обработчик регулярных выражений будет обрабатывать обратную косую черту и символ "s" в выражении \s как два различных оператора. При использовании Visual Basic 2005 добавлять обратную косую черту необязательно. При работе на C# можно использовать литеральные строки с префиксом @, в которых не действует escape-преобразование (например, @"\s2000").

С помощью регулярных выражений можно осуществлять и более сложный поиск. Например, регулярное выражение (?<char>\w)\k<char>, использующее именованные группы и механизм обратных ссылок, ведет поиск соседних парных знаков. Если применить его к строке "Я, пожалуй, выпью чашечку латте или мокко", то оно найдет совпадения в словах "латте" и "мокко" (подробные сведения об этом регулярном выражении см. в разделе Обратные ссылки.)

В следующих разделах описывается набор метасимволов, которые используются в языке регулярных выражений платформы.NET Framework, а также демонстрируется порядок применения классов регулярных выражений для реализации регулярных выражений в приложениях.


Character Escapes

Most of the important regular expression language operators are unescaped single characters. The escape character \ (a single backslash) signals to the regular expression parser that the character following the backslash is not an operator. For example, the parser treats an asterisk (*) as a repeating quantifier and a backslash followed by an asterisk (\*) as the Unicode character 002A.

The character escapes listed in this table are recognized both in regular expressions and in replacement patterns.

Escaped character Description
ordinary characters Characters other than. $ ^ { [ (|) * +? \ match themselves.
\a Matches a bell (alarm) \u0007.
\b Matches a backspace \u0008 if in a [] character class; otherwise, see the note following this table.
\t Matches a tab \u0009.
\r Matches a carriage return \u000D.
\v Matches a vertical tab \u000B.
\f Matches a form feed \u000C.
\n Matches a new line \u000A.
\e Matches an escape \u001B.
\040 Matches an ASCII character as octal (up to three digits); numbers with no leading zero are backreferences if they have only one digit or if they correspond to a capturing group number.For example, the character \040 represents a space.

Escape-знаки

Большинство основных операторов языка регулярных выражений — это одиночные знаки без escape-знака. Escape-знак "\" (одиночная обратная косая черта) указывает модулю обработки регулярных выражений, что следующий за ним знак не является оператором. Например, звездочка (*) интерпретируется модулем обработки как квантор повторения, а звездочка, перед которой стоит знак обратной косой черты (\*), — как знак Юникода 002A.

Escape-знаки, перечисленные в следующей таблице, распознаются как в регулярных выражениях, так и в шаблонах замены.

Escape-знак Описание
Обычные знаки Все знаки, кроме ".", "$", "^", "{", "[", "(", "|", ")", "*", "+", "?" и "\" соответствуют сами себе.
\a Соответствует знаку колокольчика (будильника) \u0007.
\b Соответствует символу BACKSPACE \u0008, если находится в классе знаков []. В других случаях см. примечание после этой таблицы.
\t Соответствует знаку табуляции \u0009.
\r Соответствует знаку возврата каретки \u000D.
\v Соответствует знаку вертикальной табуляции \u000B.
\f Соответствует знаку перевода страницы \u000C.
\n Соответствует знаку новой строки \u000A.
\e Соответствует escape-знаку \u001B.
\040 Соответствует знаку ASCII как восьмеричному числу (до трех разрядов). Числа, начинающиеся не с нуля, представляют собой обратные ссылки, если они состоят из одной цифры или соответствуют номеру собираемой группы. Например, знак \040 соответствует пробелу.

 

\x20 Matches an ASCII character using hexadecimal representation (exactly two digits).
\cC Matches an ASCII control character; for example, \cC is control-C.
\u0020

Matches a Unicode character using hexadecimal representation (exactly four digits).

Note:
The Perl 5 character escape that is used to specify Unicode is not supported by the.NET Framework. The Perl 5 character escape is of the form \x{####…}, where "####…" is a series of hexadecimal digits. Instead, use the.NET Framework character escape described in this row.

 

\ When followed by a character that is not recognized as an escaped character, matches that character. For example, \* is the same as \x2A.
Note:
The escaped character \b is a special case. In a regular expression, \b denotes a word boundary (between \w and \W characters) except within a [] character class, where \b refers to the backspace character. In a replacement pattern, \b always denotes a backspace.

 

\x20 Соответствует знаку ASCII в шестнадцатеричном представлении (строго две цифры).
\cC Соответствует управляющему знаку ASCII. Например, \cC — CTRL+C.
\u0020

Соответствует знаку Юникода в шестнадцатеричном представлении (строго четыре цифры).

Примечание.
Escape-знак из Perl 5, который используется для указания Юникода, не поддерживается в.NET Framework. Escape-знак из Perl 5 имеет форму \x{####…}, где "####…" представляет последовательность шестнадцатеричных цифр. Вместо этого используйте escape-знак.NET Framework, описанный в этой строке.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 114; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.218.215 (0.005 с.)