I believe he's saying you'd want:
(?=((?!exp).)*a.*)
I'm a little dubious that full equivalence is maintained (particularly w.r.t. to e.g. #match), but my brain isn't up to handling convoluted REs this early.Edit: Another hangup I have is how would you do something like:
((?~E1)|E2)E3
Obviously you can distribute by duplicating E3, but then it's pretty clear what the absent operator buys you.