Введение
Синтакcис шаблонов, используемых в функциях этого раздела, во многом похож на синтаксис, используемый в Perl. Выражение должно быть заключено в разделители, например, прямые слэши '/'. Разделителем могут выступать произвольные символы, кроме буквенно-цифровых, обратного слэша '\' и нулевого байта. Если символ разделителя встречается в шаблоне, его необходимо экранировать. Начиная с PHP 4.0.4 в качестве разделителя доступны комбинации, используемые в Perl: (), {}, [] и <>. Подробней об этом рассказано в разделе "Синтаксис регулярных выражений".
После закрывающего разделителя можно указывать различные модификаторы, влияющие на работу регулярных выражений. Детальная информация доступна в разделе "Модификаторы шаблонов".
PHP также поддерживает POSIX-совместимые регулярные выражения, используя POSIX-совместимые функции регулярных выражений.
Замечание:
Этот модуль хранит глобальный (1 на поток) кэш компилированных регулярных выражений (до 4096).
Помните об ограничениях PCRE. См. документацию по PCRE » http://www.pcre.org/pcre.txt для информации.
Библиотека PCRE - это набор функций, реализующих разбор регулярных выражений с помощью того же синтаксиса и семантики, которая была реализована в Perl 5, с некоторыми небольшими отличиями (см. ниже). Текущая реализация соответствует версии Perl 5.005.
Коментарии
Converting POSIX regex patters to PCRE is non-trivial. I had many (about 17.000) patterns stored in a DB, and found that surrounding one with delimiters (such as '/'), after quoting them, is not enough.
I've been biten by a \r that slipped into a pattern (that was supposed to be \.r and became .\r instead). Too bad in PCRE it stands for carriage-return.
AFAIK, there's no way to disable this behaviour and make PCRE more POSIX compatibile. You have to look for every single escape sequence that has no meaning in POSIX regex but has one in PCRE and remove the backslash.
Before POSIX regex are removed it would be really cool to have a function that converts a POSIX regex pattern into the equivalent PCRE one.