- 720 名前:698 mailto:sage [2007/04/12(木) 20:16:34 ID:L0tEZM2p0]
- >>704
Adblock Plus の内部機構でもそれ以外のもの(perl等)でも同様に早くなるよ。 URL処理するためだけの正規表現が複雑になることはまずないから恩恵は期待出来ないが。 それで何故早くなるかというと、 .* は可能な限り長くマッチしようとし、 .*? は可能な限り短くマッチしようとする特性がある。 1、/a.*b/ 2、/a.*?b/ という2つの表現を使って説明すると、 a 0000000000000 b 111111111111111 b 2222222222222 b 33333333333333 c という文字列に対してこの2つの正規表現を使うと 1は "a 0000000000000 b 111111111111111 b 2222222222222 b" にマッチするのに対し(最長一致)、 2は "a 0000000000000 b" にマッチする(最短一致)。 つまり1の場合、000.. の後ろの b を見つけた後もその後ろに b が無いか探し続けてしまう。 それに対し2は 000.. の後ろの b を見つけたらそこで検索を止める。 その分早くなる。 >誤訳 了解。 8文字の固定文字列を取り出して検索するとはいい方法だ。 正規表現を書くときも同じでまず固定文字列を 探すような表現にすると格段に早くなる。 >>708 >同速同条件のフィルターが2つある場合 つまり条件付きってことだな。 ある条件のもとでしか正しくならないわけだ。 「月は満月だ。」 (満月のときの月は確かに満月だが三日月などもある) みたいな無茶苦茶な理論だな。 自分では気付いてないようだが。
|

|