Что ж, в более общем смысле вы ошиблись при попытке проанализировать HTML с помощью регулярных выражений, но в отношении предоставленного вами фрагмента кода проблема заключается в том, что модификатор ungreedy сообщает *
, +
и {n,}
остановиться, как только они будут счастливы, вместо того, чтобы идти до конца.
Таким образом, это существенно влияет на то, где заканчивается совпадение, а не на то, где оно начинается - "нелюбовь" не предназначена для обозначения "дайте мне самое короткое возможное совпадение.
Вы можете как-то исправить этот конкретный пример, используя модификаторы mU
вместо sU
, чтобы .
не совпадал с новыми строками.