[ruby-list:47304] Re: マッチしない正規表現「.*?」が遅い?

From: dezawa@...
Date: 2010-08-16 23:43:44 UTC
List: ruby-list #47304
そんなものじゃないでしょうか。

rubyの実装に詳しいわけでも、正規表現に強いわけでもないですが。。。

変数 t の中に9999回現れる "<X" が/<X(?:\s[^>]*)?>.*?<\/Y>/の
頭にマッチします。ですから 9999回 変数tの最後まで評価します。
だから遅いのでは。

/<X(?:\s[^>]*)?>.*?<\/Y>/ ですと文字列最後まで評価するのは 一ヶ所だけだったのが
/<X(?:\s.*?)?>.*?<\/Y>/ ですと、二ヶ所になるのでさらに遅くなる。

"<X" の出現回数 9999回文字列最後まで評価していたのが
8万*9999回(8万の方はだんだん少なくなるけれど)文字列の最後まで評価することになりますから。

                       出沢



In This Thread