Разработка магазинов с гарантией попадания в ТОП поисковых систем

Узнать подробнее
Eltisbook > PHP учебник > Регулярные выражения > Синтаксис регулярных выражений в PHP

Синтаксис регулярных выражений в PHP

В прошлом уроке мы начали изучение регулярных выражений в PHP. Регулярные выражения — достаточно сложный для понимания инструмент PHP, зато они позволяют производить впечатляющие манипуляции в ваших программах. Сегодня мы изучим синтаксис регулярных выражений в PHP.

Синтаксис регулярных выражений

Любое регулярное выражение можно представить в виде разделителя ( «/» , «|», «{«, «!» и т.п ) и модификатора, влияющего на способ обработки РВ.

Разберем наше регулярное выражение, где мы искали все семизначные номера телефонов – /\d{3} – \d{2} – \d{2}/m. Здесь символ «/»является разделителем, \d{3} – \d{2} – \d{2} – непосредственно регулярное выражение (шаблон), а m – модификатор.

Регулярные выражения позволяют программировать альтернативы и повторения. Происходит это за счет специальных метасимволов.

Одним из основных метасимволов является обратный слэш «\». Он меняет тип символа, следующего за ним, на противоположный, т.е. если это был обычный символ, то он МОЖЕТ превратиться в метасимвол, если это был метасимвол, то он теряет свое специальное значение и становится обычным символом (это нужно для того, чтобы вставлять в текст специальные символы как обычные). Например, символ d в обычном режиме не имеет никаких специальных значений, но \dесть метасимвол, означающий «любая цифра». Символ «.» в обычном режиме означает «любой единичный символ», а «\.» означает просто точку.

Другое назначение обратного слэша – кодирование непечатных символов, таких как :

\n – cимвол перевода строки;

\e – символ escape;

\t – cимвол табуляции;

\xhh – символ в шестнадцатеричном коде, например \x41 есть буква A и т.д.

Еще одно назначение обратного слэша – обозначение генерируемых символьных типов, таких как:

\d – любая десятичная цифра (0 – 9);

\D – любой символ, не являющийся десятичной цифрой;

\s – любой пустой символ (пробел или табуляция);

\S – любой символ, не являющийся пустым;

\w – буквы, цифры и символ подчеркивания

\W – несловарный символ (все символы, кроме определяемых \w).

Попробуем самостоятельно разобрать следующее регулярное выражение:

/\d\d – \d\d\d\d – \w\w\w\w\w\w/

Данное РВ будет искать строку, которая удовлетворяет следующим параметрам:

Строка 24 – 4564 – moscow полностью удовлетворяет условиям нашего регулярного выражения.

Квадратные скобки [ ].

Квадратные скобки «[ ]» применяются для описания подмножеств внутри регулярного выражения, которые будут рассмотрены, как один символ, который может принимать значения, перечисленные внутри этих скобок.

Но если первым символом внутри квадратных скобок будет «^» то наоборот, могут приниматься только значения, не перечисленные внутри скобок.

Рассмотрим несколько примеров:

Строка [абвгд] позволяет выбрать один из символов «а, б, в, г, д», а строка [^абвгд] задает любой символ кроме «а, б, в, г, д».

Следующее регулярное выражение, описанное при помощи квадратных скобок задает любую цифру или букву в обоих регистрах – [0 – 9А – Яа – я].

Метасимволы

Все метасимволы можно разделить на две большие категории: метасимволы, распознаваемые внутри квадратных скобок и метасимволы, распознаваемые вне квадратных скобок.

Итак, метасимволы, распознаваемые внутри квадратных скобок:

Метасимволы, распознаваемые вне квадратных скобок:

Метасимвол прямая черта « | » позволяет задавать альтернативные варианты. Примером альтернативы может служить следующая строка : «(стол|стул)».

Теперь мы знаем большинство символов, используемых в регулярных выражениях и можем самостоятельно разобрать достаточно сложное выражение. Попробуем выделить в тексте строку, содержащую фамилию с инициалами. Выглядеть данное регулярное выражение будет следующим образом:

!\s[А – Яа – я]+\s([А – Я]\.\s*)([А – Я]\.\s*)!m

Восклицательные знаки по обоим сторонам шаблона задают его границы. Начнем разбирать шаблон с самого начала: