I would like to match ampersand (&) but not when it exists in following manner
'
"
>
<
&
That looks like a job for negative lookahead assertions:
&(?!(?:apos|quot|[gl]t|amp);|#)
should work.
Explanation:
& # Match &
(?! # only if it's not followed by
(?: # either
apos # apos
|quot # or quot
|[gl]t # or gt/lt
|amp # or amp
); # and a semicolon
| # or
\# # a hash
) # End of lookahead assertion