#(<img.+>\s*)(?!</a>)#Uu
В этой регулярке нужно выбрать тег img после которого не следует тег </a>
. Она находи все теги img, то есть работает неправильно.
Немного не верное "утверждение", точнее ваше утверждение (смотрящее) вперед работает только для
\s*
а оно у вас с квантором
*
-
ноль или много, и получается, что в данном случае срабатывает "ноль" повторений "предыдущего" (
\s
) и поэтому как бы не срабатывает смотрящее вперед
если вы хотите, чтобы выдергивались все
img
теги после которых нет
</a>
, то следует писать как-то так
<img[^<>]*?>(?!<\/a>)
а если переживаете, что там может быть пробельные символы, то как-то так
(<img[^<>]*?>)(?!\s*<\/a>)
https://regex101.com/r/IoAn7q/1