The idea here would be to compile the regex of each rule to an automata (each automata matches a set of strings) and them build a fst out of them (that would map strings to matched rules)
Matching against static, glob and regex patterns. And there is some grouping and filtering so, it's not like every URL gets all 64k patterns matched. And it's possible to pre-compile and group the Regex to get a little faster (lots of framework routers do this)
From my opinion the "web" is so contaminated it's a shorter accept-list than a constantly changing reject-list
Furthermore the decision tree needn't be binary. If you group regexes by common substrings and then even group substrings for, say, a Commentz-Walter matcher, you are able to distinguish N+1 cases for N patterns, with significantly lesser costs than N times the cost of matching for one substring alone.
Arguably its more useful to know what a given website actualy requires than to know every possible advertising scheme. Allow lists teach about where to find desired content. Block lists do not teach anything useful in that regard.