Регулярные выражения PHP
Доброго времени суток. В данной статье мы поговорим о регулярных выражениях. Регулярное выражение — это шаблон записанный специальным образом по которому мы можем найти подстроку (строку), т.е. это образец, состоящий из символов и метасимволов задающий правило поиска. И мы как раз поговорим о правилах создания регулярных выражений.
Сразу у Вас может возникнуть вопрос “А за чем они нужны?”. Давайте я приведу пример, у нас есть строка “Мама мыла раму” и нам необходимо найти слово “раму”. Да, в PHP есть функция strpos(), которая возвращает подстроку в строке. И в этом случае лучше воспользоваться именно этой функцией, чем регулярным выражением. А теперь представьте есть строка “yandex.ru, mail.ru, google.com, web-programming.com.ua” и нам необходимо найти все URL содержащие “.ru”. А теперь представьте, что данная строка еще и меняется, и мы не всегда знаем ее содержимое. Вот тут нам без регулярных выражений никак не обойтись.
Кванторы
Квантификатор — это специальная конструкция, определяющая, сколько раз должен встретиться символ или группа символов.
* | 0 или больше |
*? | 0 или больше, не жадный |
+ | 1 или больше |
+? | 1 или больше, не жадный |
? | 0 или 1 |
?? | 0 или 1, не больше |
{3} | ровно 3 |
{3,} | 3 или больше |
{3,5} | 3, 4 или 5 |
{3,5}? | 3, 4 или 5, нежадный |
Диапазоны
Диапазон — это специальная конструкция, определяющая диапазон поиска.
. (точка) | Любой символ, кроме переноса строки (\n) |
(a|b) | a или b |
[abc] | Диапазон (a или b или с) |
[^abc] | Не a, не b, не с |
[a-z] | Буква между a и z |
[A-Z] | Буква между A и Z в верхнем регистре |
[0-5] | Цифра между 0 и 5 |
Якоря
Якорь — специальная конструкция, определяющее обязательное положение символа
^ | Начало строки |
$ | Конец строки |
Символьные классы
\s (в нижнем регистре) | Пробел |
\S (в верхнем регистре) | Не пробел |
\d (в нижнем регистре) | Цифра |
\D (в верхнем регистре) | Не цифра |
\w (в нижнем регистре) | Слово |
\W (в верхнем регистре) | Не слово |
\xhh | Шестнадцатиричный символ hh |
Специальные символы
\ | Экранирующий символ |
\n | Перевод строки (новая строка) |
\r | Возврат коретки |
\t | Табуляция |
Модификаторы шаблонов
i | Регистронезависимый шаблон |
m | Многострочный текст |
s | Считать текст одной строкой |
x | Разрешить комментарии и пробелы в шаблоне |
U | не жадный шаблон |
Примеры шаблонов
Поиск букв и цифр одна или больше: ([A-Za-z0-9]+)
Поиск слова login или logout: (login|logout)
Поиск сайтов в домене ru: (\w)+\.ru
Мы с Вами познакомились с правилами составления шаблонов поиска при помощи регулярных выражений.
[…] выражениях Вы можете подробно почитать в статье Регулярные выражения PHP Итак, мы с вами создали три правила для Kohana, по которым […]