記事によると、2つの異なるタイプの正規表現アルゴリズム(Perl5.8.7とThompsonNFA)についてこの記事を読んだ後、後者は前者よりも約1,000,000倍高速です。私は毎日PHPを使用しており、正規表現を頻繁に使用しているため、PHPがどのアルゴリズムを使用しているかを知りたいと思いました。
この質問を見つけましたが、JavaScript専用です。回答の1つは、JavaScriptがThompson NFAアルゴリズムを使用していると述べていますが、それはもちろん実装ごとに異なります。PCRE
PHPが一連の関数に移行したときに、より高速なアルゴリズムの使用に切り替えた可能性があると思いますereg_*
。
PHP PCREのドキュメントを見てきましたが、私が見る限り、どのアルゴリズムを使用しているかについては何も教えてくれません。頭字語PCRE
は、私にはそれがを使用していることを示しているPerl Compatible Regular Expressions
ので、Perlスタイルのアルゴリズムを使用していると思います。
PHPはどの正規表現アルゴリズムを使用しますか?それは「Perl5.8.7スタイル」ですか、それともはるかに高速なThompson NFAアルゴリズムを使用していますか、それとも完全に別のアルゴリズムを使用していますか?Perlバックエンドを使用してその式を実行することさえできますか?
PHPがPerlスタイルのアルゴリズムを使用している場合、それは正確には何ですか?他のアルゴリズムとの関連で抽象的な定義/説明を探しています。