To represent a NOT, use the negative assertion \@!.
For example, “NOT Bush” would be:
^\(.*Bush\)\@!
or using \v:
\v^(.*Bush)@!
Important: note the leading ^. While it’s optional if you only use positive assertions (one match is as good as any other), it is required to anchor negative assertions (otherwise they can still match at the end of a line).
Translating “Bush AND Clinton AND NOT (Carter OR Obama)”:
\v^(.*Bush)&(.*Clinton)&(.*Carter|.*Obama)@!
Addendum
To explain the relationship between \& and \@=:
One&Two&Three
is interchangeable with:
(One)@=(Two)@=Three
The only difference is that \& directly mirrors \| (which should be more obvious and natural), while \@= mirrors Perl’s (?=pattern).