Какой алгоритм регулярных выражений использует PHP?

После прочтения этой статьио двух разных типах алгоритмов регулярных выражений (Perl 5.8.7 и Thompson NFA), последний в ~ 1 000 000 раз быстрее, чем первый, согласно статье. Я использую PHP ежедневно и довольно часто использую регулярные выражения, поэтому я хотел знать, какой алгоритм использует PHP.

Я нашел этот вопрос, однако он только для JavaScript. В одном из ответов говорится, что JavaScript использует алгоритм Thompson NFA, но это, конечно, будет варьироваться от реализации к реализации. Я думаю, что PHP, возможно, переключился на использование более быстрых алгоритмов, когда он перешел к набору функций PCRE, отказавшись от ereg_*.

Я просмотрел документацию PHP PCREи, насколько я мог видеть, ничего не говорит мне о том, какой алгоритм он использует. Акроним PCREдля меня говорит мне, что он использует Perl Compatible Regular Expressions, поэтому я предполагаю, что он использует алгоритм стиля Perl.

Какой алгоритм регулярных выражений использует PHP? Это "Perl 5.8.7», или он использует гораздо более быстрый алгоритм Thompson NFA, или совершенно другой? Может ли он даже использовать бэкэнд Perl для запуска своих выражений?

Если PHP действительноиспользует алгоритм стиля Perl, что именно?Я ищу абстрактное определение/объяснение по отношению к другим алгоритмам.

9
задан Community 23 May 2017 в 02:33
поделиться