Некоторые ключевые различия между регулярными выражениями PCRE и Perl:
- Рекурсивные соответствия. 1 В PCRE они атомарные, в Perl — неатомные. 1
- Именованные буферы захвата. 1 PCRE позволяет присваивать им числовые имена, Perl требует, чтобы имя соответствовало правилу barewords. 1
- Опережающие утверждения. 3 PCRE не разрешает их повторение, Perl разрешает, но с другим значением. 3
- Альтернативные ветви lookbehind-утверждения. 2 В Perl все альтернативные ветви должны иметь одинаковую длину, в PCRE каждая из них может быть разной, но всё равно фиксированной. 2
- Поддержка конструкций. 1 PCRE не поддерживает определённые «экспериментальные» конструкции Perl, например (??{…}) или (?{}), хотя последнюю можно эмулировать с помощью (?Cn). 1
- Ограничение на глубину рекурсии. 12 Perl использует кучу для рекурсии и не имеет жёсткого ограничения, PCRE имеет жёсткое ограничение по времени компиляции. 1
- Отношение к ошибочным конструкциям. 1 Perl допускает кванторы в конструкции (?!), PCRE выдаёт ошибку. 1
Несмотря на то, что PCRE изначально был нацелен на функциональную эквивалентность с Perl, эти две реализации не полностью эквивалентны. 1