Nachdem Sie diesen Artikel über zwei verschiedene Arten von Algorithmen für reguläre Ausdrücke gelesen haben (Perl 5.8.7 und Thompson NFA) ), das Letztere ist ~ 1,000,000 mal schneller als ersteres, gemäß dem Artikel. Ich benutze PHP täglich und benutze Regex ziemlich viel, also wollte ich wissen, welchen Algorithmus PHP benutzt.
Ich fand diese Frage , wie auch immer nur für JavaScript. Eine der Antworten besagt, dass JavaScript den Thompson NFA-Algorithmus verwendet, aber das wird natürlich von Implementierung zu Implementierung variieren. Ich denke, dass PHP möglicherweise zu den schnelleren Algorithmen übergegangen ist, als es zu seinem PCRE
Satz von Funktionen übergegangen ist und das ereg_*
Zeug ablehnt.
Ich habe mir die PHP PCRE-Dokumentation angeschaut und, soweit ich sehen konnte Es sagt mir nichts darüber, welchen Algorithmus es benutzt. Das Akronym PCRE
sagt mir, dass es Perl Compatible Regular Expressions
verwendet, also nehme ich an, dass es den Perl-Algorithmus verwendet.
Welchen Regular Expression Algorithmus verwendet PHP? Ist es "Perl 5.8.7 style", oder verwendet es den viel schnelleren Thompson NFA-Algorithmus oder einen anderen vollständig? Könnte es sogar ein Perl-Backend verwenden, um seine Ausdrücke auszuführen?
Wenn PHP einen Perl-Algorithmus verwendet, was genau ist das? Ich suche nach einer abstrakten Definition / Erklärung in Bezug auf andere Algorithmen.
Aus dem Handbuch:
Ссылка :
Reguläre Ausdrücke ( Perl-kompatibel )
Ссылка :
Die PCRE-Bibliothek besteht aus einer Reihe von Funktionen, die regelmäßig implementiert werden Expression Pattern Matching mit der gleichen Syntax und Semantik wie Perl 5, mit nur wenigen Unterschieden (siehe unten). Die jetzige Implementierung entspricht Perl 5.005.