Regex Match Амперсанд, но не экранированные символы xml

Я хотел бы сопоставить амперсанд (&), но не тогда, когда он существует следующим образом

'
"
>
<
&
&#

Итак, в следующей строке   & MY& NAME IS M&Hh. ' " > < & &# &&&&&&

Я хочу, чтобы он соответствовал всем амперсандам, кроме тех, которые существуют в   ' " > < & &#

Ответ 1

Это выглядит как работа для отрицательных ожидающих утверждений:

&(?!(?:apos|quot|[gl]t|amp);|#)

должен работать.

Объяснение:

&        # Match &
(?!      # only if it 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