complement, intersection, and why the most common regex workarounds are hundreds of times slower than they need to be