downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PCRE> <Differences From Perl
[edit] Last updated: Fri, 25 May 2012

view this page in

Отличия от регулярных выражений POSIX

По состоянию на PHP 5.3.0, расширение регулярные выражения POSIX‎ считается устаревшим. Существует целый ряд отличий между регулярными выражениями POSIX и PCRE. На этой странице перечислены наиболее важные из них, которые необходимо знать для того, чтобы выполнить преобразование в PCRE.

  1. Функции PCRE требуют, чтобы шаблон был заключен в разделители.
  2. В отличие от POSIX, в расширении PCRE нет специальных функция для поиска совпадений без учета регистра. Вместо них используется модификатор шаблона i (PCRE_CASELESS). Также доступны другие модификаторы шаблонов для изменения стратегии поиска совпадений.
  3. Функции POSIX находят самое длинное совпадение, ближнее к левому краю, а PCRE останавливается с первым найденным совпадением. Если строка не совпадает вовсе, это не имеет значения, в противном случае это может оказать существенное влияние и на результаты поиска совпадений, и на скорость этого поиска. Чтобы проиллюстрировать эту разницу, рассмотрим следующий пример из книги Джеффри Фридла "Регулярные выражения" (Jeffrey Friedl, "Mastering Regular Expressions"). При прменении шаблона one(self)?(selfsufficient)? к строке oneselfsufficient, PCRE вернет oneself, но при использовании POSIX результатом будет вся строка oneselfsufficient. Обе (под)строки соответствуют исходному шаблону, но POSIX требует, чтобы наиболее длинная вернулась в качестве результата.

Замены для функций
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() Нет эквивалента



add a note add a note User Contributed Notes Отличия от регулярных выражений POSIX
jasen at treshna dot com 26-Oct-2011 03:11
there are several other differences

including different meaning for the symbols  ( [
different rules for which symbols need escaping (they can't be the same as both standard posix and extended posix)

you should read the full documentation for PCRE before chaging any posix regex to use pcre.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites