Negative Lookahead Regex для частичного разбора dom

Я пытаюсь получить изображения в якорях. Я знаю, что хорошей практикой для этого является анализ DOM, но я пытаюсь сохранить память здесь.

<a href=''><img src=''></a>

Решение приведенного выше примера довольно простое <a[^>]*?href=['\"](.*?)['\"][^>]*?>[\s\S]*?<img, Но в более сложном примере

<a href=''></a><a href=''><img src=''></a>

что регулярное выражение не удается, и собирает всю строку с неправильной привязкой, мне нужно как-то добавить отрицательный взгляд, и я пытаюсь до сих пор (?!</a>)<a[^>]*?href=['\"](.*?)['\"][^>]*?>[\s\S]*?<img но по какой-то причине это не имеет значения.

1 ответ

Решение

Положите отрицательную проверку на промежуточное .* а также [\s\S]*, Потому что это соответствует также закрывающему тегу привязки.

<a[^>]*?href=['\"](?:(?!<\/a>).)*?['\"][^>]*?>(?:(?!<\/a>)[\s\S])*?<img

DEMO

Другие вопросы по тегам