この質問は、次の投稿のフォローアップです: Javascript regex: Find all URLs outside <a> tags - Nested Tags
コードが次のことを発見しました:
\b((https?|ftps?):\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
http
次のように forとftp
part を別々に実行するのに比べて、非常に非効率的です。
\b(https?:\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
と
\b(ftps?:\/\/[^"<\s]+)(?![^<>]*>|[^"]*?<\/a)
regex101.com の例を次に示します。
しかし、私の HTML ページの 1 つで、これらのコードを85628ステップと7258 + 795ステップと比較すると、非常に異常です。
私が見た限りでは、(x|y)パターンを使用すると実行時間が短縮されますが、ここではおそらく奇妙な理由でそうではありません。
どんな助けでも大歓迎です。