Welchen regulären Ausdruck Algorithmus verwendet PHP?

9

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.

    
Bojangles 18.04.2012, 22:20
quelle

1 Antwort

5

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.

    
Jonathan Kuhn 18.04.2012, 23:36
quelle

Tags und Links