22.2. Регулярные выражения
К счастью, PHP предлагает и более мощные инструменты, чем функция strtok, - регулярные выражения. Описанные на своем собственном языке, регулярные выражения позволяют описывать шаблоны, которые затем сравниваются со строками. Исходный код PHP включает в себя реализацию регулярных выражений, удовлетворяющих стандарту POSIX 1003.2. Этот стандарт позволяет создавать не только выражения старого стиля, но и работать с новым стилем, который описывается ниже. Подробное описание регулярных выражений см. в главе 12, "Кодирование и декодирование".
В 1999 году Андрей Змиевский добавил в PHP поддержку регулярных выражений, соответствующих стилю языка Perl. Они имеют два преимущества перед оригинальными регулярными выражениями PHP: упрощают копирование выражений из сценария Perl и выполняются быстрее.
Более глубокое изучение регулярных выражений выходит за рамки настоящей книги. Регулярные выражения - это тема для отдельной книги, здесь же затрагиваются только основы и описываются различные PHP-функции, в работе которых используются регулярные выражения. Отличным источником информации о регулярных выражениях является книга Элли Квигли (Ellie Quigley) UNIX Shells by Example. Если есть желание узнать побольше о регулярных выражениях PERL-стиля, обратитесь к официальному Web-узлу с документацией по Perl (<http://www.perldoc.com/ perl5.8.0/pod/ perlre.html>). Затем нужно ознакомиться с документацией на самом Web-узле PHP, где описываются различия между реализацией регулярных выражений в Perl и PHP (<http://www.php.net/manual/pcre.pattern.syntax.php>). Действительно, реализации регулярных выражений в PHP присуще несколько отличий, но большинство выражений Perl выполняются в PHP в неизменном виде.
22.3. Определение регулярных выражений
На верхнем уровне регулярное выражение представляет собой одну или несколько ветвей, разделенных вертикальной чертой (|). Этот символ должен обладать свойствами "логического ИЛИ", т.е. любая из строк должна соответствовать оцениваемой строке. Несколько примеров такой строки приводится в табл. 22.1.
Каждая ветвь содержит один или несколько атомов, с помощью которых определяется количество соответствий данному атому. Символ звездочка (*) свидетельствует о том, что соответствие атому может определяться любое количество раз. Знак "плюс" (+) означает, что соответствие атому может определяться как минимум один раз. Знак вопроса (?) " свидетельствует о том, что соответствие атому может определяться один раз или не соответствовать совсем.
Кроме того, атом может быть связан, что означает, что он содержит число, заключенное в фигурные скобки ({}). Если в фигурных скобках содержится одно число, это означает, что атом должен иметь соответствие именно такое число раз. Если в фигурные скобки заключены число и запятая, атом должен соответствовать именно такое или большее количество раз. Если в скобках указываются два числа, разделенных запятыми, это означает, что атом должен соответствовать по меньшей мере число раз, равное первому числу, но не более числа раз, указанных вторым числом. Примеры правил повторения приведены в табл. 22.2.
Атомом называется последовательность символов, из которых одни могут иметь специальное значение, а другие просто соответствуют определенному символу. Символ точки (.) соответствует любому одиночному символу, (Л) - началу строки, символ доллара ( $) - завершению строки. Если необходимо указать соответствия специальному символу (Л . [] $ () | * ? {} ), его необходимо предварить обратной косой чертой. В принципе любой символ, предваряемый символом обратной косой черты, будет рассматриваться как литерал, даже если у него нет никакого специального значения. Любой символ, не имеющий специального значения, считается символом, который должен соответствовать независимо от того, следует он за обратной косой чертой, или нет. Атом группируется с помощью скобок.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Синтаксический анализ и обработка строк. Часть Вторая.
24-05-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Синтаксический анализ и обработка строк | PHP. Синтаксический анализ и обработка строк. Часть Третья. |