Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

Группировка

Сейчас мы разберемся, как группировать серию символов в шаблоне. Группировка означает, что вы можете использовать повторитель для под-выражения, а не для одиночного символа. Например, выражение /f (re)+d/ означает, что ге может повторяться один или несколько раз. Вы можете использовать символ | для совпадений со значениями, указанными слева и справа от |. Например, выражение /milk (and | or) meat/ соответствует milk and meat и milk or meat. Вот еще один пример: выражение /f red (ing | ed) ? / совпадает с freding, freded и fred.

Классы символов

Сейчас мы разберемся, как использовать квадратные скобки ( [ ] ) для создания класса символов. Для указания диапазона символов используйте тире, например, [ 0 - 9 ] соответствует любому цифровому символу, а [ 0 -9а-f A-F] - любому шестнадцатеричному символу. Используя каретку (^) в качестве первого символа в квадратных скобках, вы можете найти все символы, кроме тех, что указаны в скобках. Например, [^ 0-9] совпадает с любыми символами, кроме 0-9.

Собирая все вместе

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

/<as+[^>]*href="[^"]+"/i
Это регулярное выражение соответствует HTML-тегу ссылки. Вот основные части этого выражения:

1. Все теги ссылок начинаются символами <а, поэтому они находятся в на-чале регулярного выражения.

2. После <а должны быть пробельные символы, иначе мы можем найти . Поэтому мы используем \s.

3. Теперь нам нужно найти любые символы в теге ссылки, поскольку тут могут быть дополнительные атрибуты вроде target="blank". Тег заканчивается >, поэтому мы используем [^>] * для нахождения 0 или больше символов, которые не являются символом >. Возможно, этот шаг покажется вам неразумным. Было бы более уместно увидеть эти символы в конце выражения, а не здесь. Но подождите, пока еще рассмотрено не все выражение.

4. Атрибуты ссылки начинаются с href =”” (для пущей простоты мы игнорируем тот факт, что люди иногда забывают указывать кавычки перед ссылкой).

5. Теперь мы достигли первого символа ссылки. Мы хотим захватить всю ссылку, поэтому мы используем тот же трюк, что и в шаге 3; [^ " ] + соответствует одному или более символам.

6. Чтобы найти оставшуюся двойную кавычку, мы помещаем ее в наше выражение. Это может показаться ненужным, поскольку мы уже нашли ссылку, но обычно лучше немного усложнить выражение, чем собрать немного «мусора».

7. Имена тегов и атрибутов в HTML нечувствительны к регистру, поэтому мы добавляем модификатор I к нашему выражению. Как видите, шаблоны регулярных выражений довольно просты. Настало время изучить, как их использовать в РНР.

 
Предыдущая   На главную   Следующая