Регулярные выражения в PHP
Регулярные выражения относятся к числу инструментов обработки строк, причем являются, пожалуй, самым мощным инструментом в этой области. Понятие регулярных выражений присуще фактически любому современному языку программирования, и php не стало исключением. В php существует два подхода к работе с регулярными выражениями (т.е. два набора функций):
- POSIX – совместимые:
- Perl – совместимые (именно этому методу и будет посвящена данная статья).
Поскольку функции в стиле perl, являются наиболее мощными и распространенными, на них, пожалуй, и остановимся. Сразу отмечу, что сама тематика «Регулярные выражения» является весьма сложной для освоения. Мало кто не испугается при виде, к примеру, такой записи: «/[S]+@[S]+/i» – а это лишь означает формат записи e-mail адреса. Ну ладно, понемногу начнем разбираться с данной технологией, а к примеру еще вернемся чуть позже.
Чтобы дать понять, что же такое регулярные выражения, далеко ходить не будем, обратимся к стандартной системе поиска Windows. Если вы являетесь, так называемым, «продвинутым пользователем» (а раз вы это читаете, вероятно, именно таким пользователем вы и являетесь), вы знаете о спец символах, используемых при поиске. К примеру, чтобы найти все файлы с расширением php, необходимо в строке поиска вписать *.php. Вот это и является простейшим регулярным выражением.
Для описания регулярных выражений используется три набора показателей – метасимволы, квантификаторы, модификаторы. Итак, начнем по порядку.
Метасимволы.
Их можно описать, как набор специальных символов в php, предназначенных для создания шаблона поиска. Ниже приведен список метасимволов в php:
\ – общий экранирующий символ;
^ – маркер начала данных (при использовании в квадратных скобка означает отрицание символа)
$ – Конец строки (или всех данных)
[ ] – начало и конец символьного класса (символьный класс – группа некоторых символов, которые могут являться/не являться вариантами совпадения для одного символа)
. – Любой символ.
Выше представлен список наиболее часто используемых метасимволов для работы с регулярными выражениями. Для примера – to[sr]t. Это выражение говорить о том, что шаблону соответствуют слова tost и tort. Думаю с этим все ясно, идем далее…
Квантификаторы.
Под ними подразумевают служебные символы, которые отражают количество повторений того или иного символа. В рамках этого пункта рассмотрим также типы символов. Для облегчения восприятия будем их рассматривать на примере символа «А», но на практике, вместо этого символа может быть любой другой…
Вот список квантификаторов в php:
A+ (одно и более повторений символа А подряд);
А* (отсутствие символов А, стоящих подряд);
А? (1 символ A(допускается отсутствие символа))
А{3} (три стоящих подряд символа А (вместо тройки может быть и любое другое число))
A{1.4} (от одного до четырех символов А подряд)
A{3. } (три и более символов А)
Типы символов:
D – десятичные цифры
S – символ пробела
W – символы, образующие слова
Касательно типа символов, хотелось бы отметить, что очень важно учитывать регистр, он имеет огромное значение, если запись s означает символ пробела, то S – все символы, кроме символа пробела. Из чего следует, что при неправильном выборе регистра, вы получите противоположный желаемому результат.
Всю теорию, что хотел – я изложил. Пришло время разобрать “по косточкам” наш пример «/[S]+@[S]+/i».
Итак, что мы имеем: само тело шаблона заключено между символами «/», между двумя такими символами пишется любое регулярное выражение. Знак i в конце означает, что шаблон нечувствителен к регистру. Что касается самого шаблона то он состоит из 2-х наборов символов «[S]+» и стоящей между ними @. Что касается «[S]+», то это значит – любое количество повторений любых символов кроме пробела. Ну знак @ собственно и означает @. Т.е. в конечном итоге мы имеем 2 набора любых символов без пробелов, разделенных знаком @. Под это описание как раз и попадает e-mail адрес.
Вот пожалуй, пока и все, что касается данной темы.





Добавить комментарий
Вы должны войти