Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Регулярные выражения
Синтаксис регулярных выражений
Строгое определение регулярного выражения выглядит довольно громоздко. Начнем с неформального описания.
Регулярное выражение представляет собой строку. Эта строка состоит из собственно регулярного выражения (шаблона), выделенного с помощью специального символа разделителя (это могут быть символы " / " , " | ", " { ", " !" и т.п ) и модификатора, влияющего на способ обработки РВ.
В дальнейшем это описание будет расширено.
Например, в регулярном выражении /\d{3}-\d{2}-\d{2}/m символ " / "является разделителем, \d{3}-\d{2}-\d{2} – непосредственно регулярное выражение (шаблон), а m – модификатор.
Мощь регулярных выражений порождена в основе своей их способностью включать в шаблон альтернативы и повторения. Они кодируются в шаблоне с помощью метасимволов. Метасимвол отличается от любого другого символа тем, что имеет специальное значение.
Одним из основных метасимволов является обратный слэш " \ ". Он меняет тип символа, следующего за ним, на противоположный, т.е. если это был обычный символ, то он МОЖЕТ превратиться в метасимвол, если это был метасимвол, то он теряет свое специальное значение и становится обычным символом (это нужно для того, чтобы вставлять в текст специальные символы как обычные). Например, символ d в обычном режиме не имеет никаких специальных значений, но \d есть метасимвол, означающий "любая цифра". Символ " ." в обычном режиме означает "любой единичный символ", а " \." означает просто точку.
Другое назначение обратного слэша – кодирование непечатных символов, таких как :
\n – cимвол перевода строки;
\t – cимвол табуляции;
\xhh – символ в шестнадцатеричном коде, например \x41 есть буква A и т.д.
Еще одно назначение обратного слэша – обозначение генерируемых символьных типов, таких как:
\d – любая десятичная цифра ( 0-9 );
\D – любой символ, не являющийся десятичной цифрой;
\s – любой пустой символ (пробел или табуляция);
\S – любой символ, не являющийся пустым;
\w – символ, используемый для написания Perl-слов (это буквы, цифры и символ подчеркивания), так называемый "словарный символ";
\W – несловарный символ (все символы, кроме определяемых \w ).
Что имеется в виду под "символьным типом"? Просто каждый метасимвол принимает значение (одно) из класса возможных значений, заданных автоматически или вручную. Символьные типы, задаваемые пользователем, описываются с помощью квадратных скобок (подробнее об этом позже). Выше приведены символьные типы, диапазон значений которых заранее определен языком программирования.
Пример использования приведенных выше метасимволов:
/\d\d\d plus \d is \w\w\w/
Это РВ означает: трехзначное число, за которым следует подстрока plus, любая цифра, затем is и слово из трех словарных символов. В частности, данному РВ удовлетворяют строки: " 123 plus 3 is sum ", " 213 plus 4 is 217 ".
Вообще различают два множества метасимволов: те, что распознаются в любом месте шаблона, за исключением внутренности квадратных скобок, и те, что распознаются внутри квадратных скобок.
Квадратные скобки [ ] применяются для описания подмножеств и внутри регулярного выражения рассматриваются как один символ, который может принимать значения, перечисленные внутри этих скобок. Однако если первым символом внутри скобок является ^, то значением символьного класса могут быть только символы, НЕ перечисленные внутри скобок.
Примеры:
- Символьный класс [абвгд] задает один из символов а, б, в, г, д, а класс [^абвгд] задает любой символ, кроме а, б, в, г, д.
- Если написать [2бул]ки], то это выражение интерпретируется как один из символов 2, б, у, л, за которым следует строка ки], потому что первая встретившаяся закрывающая квадратная скобка (разбор происходит слева направо) заканчивает определение символьного класса. То есть это РВ совпадет с одной из строк 2ки], бки], уки] или лки].
- С помощью РВ [0-9А-Яа-я] можно задать любую букву или цифру.
Метасимволы, распознаваемые вне квадратных скобок, можно разделить на группы следующим образом: определяющие положение искомого текста в строке, связанные с подвыражениями, ограничивающие символьный класс, квантификаторы и перечисление альтернатив.