Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
reg.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
143.87 Кб
Скачать

Метапоследовательности

Символ "\", непосредственно предшествующий одному из метасимволов, отменяет специальное значение последнего.

Если "\" предшествует обычному символу, то такая последовательность приобретает специальное значение и называется метапоследовательность.

Метапоследовательности в регулярном выражении служат, в основном, для представления отдельных символов, их классов или определенного места в строке, дополняя и иногда дублируя функции метасимволов.

Рассмотрим существующие метапоследовательности.

\nnn — представляет символ, восьмеричный код которого равен nnn. Например, последовательность \120\145\162\154 представляет слово Perl (\120 — восьмеричный код буквы Р, \145 — буквы е, \162 — буквы r, \154 — буквы l);

\хnn — представляет символ, шестнадцатеричный код которого равен nn. Слово Perl, например, представляется последовательностью \x50\x65\х72\х6С;

\сn — представляет управляющий символ, который генерируется при нажатии комбинации клавиш <Ctrl>+<N>, где N — символ, например, \cD соответствует <Ctrl>+<D>;

\$ — символ "$";

\@ — символ "@";

\% — символ "%";

\а — представляет символ с десятичным ASCII-кодом 7 (звонок). При выводе производит звуковой сигнал;

\е — символ Esc, десятичный ASCII-код 27;

\f — символ перевода страницы, десятичный ASCII-код 12;

\n — символ новой строки, десятичный ASCII-код 10;

\r — символ "возврат каретки", десятичный ASCII-код 13;

\t — символ горизонтальной табуляции, десятичный ASCII-код 9;

\v — символ вертикальной табуляции, десятичный ASCII-код 11;

\s — представляет класс пробельных символов. К пробельным символам относятся: пробел, символ табуляции, возврат каретки, символ новой строки и символ перевода страницы. То же самое, что и [\t, \r, \n, \f ];

\S — представляет класс непробельных символов, то же самое, что и класс [^ \t,\r,\n,\f];

\d — класс цифровых символов, то же, что и [0-9];

\D — класс нецифровых символов, то же, что и [^0-9];

\w — представляет класс буквенно-цифровых символов, состоящий из букв, цифр и символа подчеркивания "_". То же самое, что и [a-zA-z_0-9]. Обратите внимание, что в этот класс входят только буквы английского алфавита;

\W — представляет класс небуквенно-цифровых символов. То же, что и [^a-zA-Z_0-9];

\A — обозначает начало строки;

\Z — обозначает конец строки;

Последовательность \А эквивалентна метасимволу ^ в начале регулярного выражения, а последовательность \Z — метасимволу $ в конце регулярного выражения, за исключением одного случая. Назовем строку, содержащую внутри себя символы новой строки (ASCII 10), мульти-строкой. Фактически мульти-строка состоит из отдельных строк, разделенных ограничителями — символами новой строки. При выводе мульти-строка отображается в виде нескольких строк. Если к мульти-строке применяется операция поиска или замены с опцией /m (см. ниже), то последовательности \A и \Z обозначают соответственно начало и конец всей мульти-строки, а метасимволам ^ и $ соответствуют еще и границы внутренних строк, образующих мульти-строку.

\b — обозначает границы слова. Под словом понимается последовательность символов из класса \w. Граница слова определяется как точка между символами из класса \w и символами из класса \W;

\B — обозначает не-границы слова, т. е. класс символов [^\b];

\l — обозначает, что следующий символ регулярного выражения преобразуется к нижнему регистру. Например, запись /\lP/ означает, что символ P будет преобразован к нижнему регистру, после чего новый образец /р/ может быть использован в соответствующей операции поиска или замены;

\u — обозначает, что следующий символ регулярного выражения преобразуется к верхнему регистру;

\L . . . \Е — обозначает, что все символы в регулярном выражении между \L и \E преобразуются к нижнему регистру;

\U . . . \Е — обозначает, что все символы в регулярном выражении между \U и \Е преобразуются к верхнему регистру;

\Q . . . \E — обозначает, что все метасимволы в регулярном выражении между \Q и \E экранируются при помощи символа "\". Например, запись /\Q^*?+\E/ эквивалентна записи /\^\*\?\+/;

\G — обозначает точку, в которой закончился предыдущий поиск m//g (см. описание операции поиска m//).

Атомы

Метасимволы "(" и ")" служат для группирования ряда элементов, входящих в состав образца, в один элемент. Например, образцу /(abc)+/ соответствует строка, состоящая из одного или более повторений последовательности abc, в то время, как образцу /abc+/ — строка, состоящая из начальных символов ab, за которыми следует один или более символов с.

Теперь мы можем перечислить "атомы", из которых строится регулярное выражение.

Регулярное выражение в скобках, представляющее несколько элементов, сгруппированных в один.

Любой обычный символ (не метасимвол).

Символ ".", представляющий любой одиночный символ, кроме символа новой строки.

Конструкция [...], представляющая класс символов, перечисленных в квадратных скобках.

Метапоследовательность, представляющая символ или класс символов: \а, \n, \r, \t, \f, \e, \d, \d, \W, \w, \S, \s.

Метапоследовательность вида \ппп, определяющая символ при помощи его восьмеричного ASCII-кода ппп.

Метапоследовательность вида \хnn, определяющая символ при помощи его шестнадцатеричного ASCII-кода nn.

Метапоследовательность вида \сn, представляющая управляющий символ ctrl-n.

Конструкция вида \number, представляющая обратную ссылку.

Любая конструкция вида \character, не имеющая специального значения, а представляющая собственно символ character, например: \*, \у, \h.

Напомним, что в регулярном выражении множители *, +, ?, {n,m} применяются именно к атому, расположенному непосредственно слева.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]