как извлечь парные теги с помощью регулярных выражений?

Пытаюсь решить задачу, по извлечению парных тегов из html страницы. В голову пришло любопытное решение: вытаскивать все парные теги, запихивая содержимое в группу, после чего проводить рекурсивный поиск по группе. Однако при таком подходе появляется проблема: регулярка либо сжирает чужие теги, либо попросту теряет нужные. Как пример:

pattern = "<span.*?>(.*?)<\/span>"

string = "<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span>"

В таком случае, он выдаст приемлемый результат:

match -> "<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span>"

match.group(1) -> "<span></span><span></span><span></span>"

Однако когда я запускаю такой же поиск по группе, происходит нехорошая вещь:

match -> "<span></span><span></span><span></span>"

match.group(1) -> "</span><span></span><span>"

То бишь регулярка съедает чужой закрывющий тег. Поигравшись с кванторами, получилось извлечь правильно теги из группы, но тогда в первом примере, часть тегов попросту игнорируется. Вопрос, как быть? Возмозжно я что то с кванторами не учёл, или есть какой-то особый способ решения такого - буду рад услышать. Заранее благодарю за внимание


Ответы (0 шт):