タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

正規表現とoperaに関するgabillのブックマーク (1)

  • Operaだけ何故か極端に高速な正規表現パターン - 風と宇宙とプログラム

    とても単純な正規表現だけれど、照合するのに非常に時間のかかるパターンがあります。下記はその一例。 var s = "abcdefghijklmnopqrstuvwxyz".match(/a(.+)+c/); 照合することは一目瞭然です。しかし、+ は最長一致型の照合なので2重のバックトラックが発生して、上の文字列の場合、一番最後になって照合が確認されることになります。たぶん、直感的には入力文字列の長さに応じて指数オーダで時間がかかるのだと思います。 実際にブラウザ上で確認すると、ChromeとIEは数秒程度かかりました。Firefoxは「警告:応答のないスクリプト」のポップアップが表示されてしまいました。 ところが、Operaは一瞬です。Date関数で処理時間を測定してもゼロです。Safariも結構高速で、数ミリ秒程度です。 通常、正規表現の実行は、オートマトンを実行する中間コードにコンパ

    Operaだけ何故か極端に高速な正規表現パターン - 風と宇宙とプログラム
    gabill
    gabill 2009/10/30
    Opera、特定の条件下において最強伝説。
  • 1