Не используйте регулярное выражение для соответствия HTML-документа. Лучше проанализировать его как дерево DOM, используя вместо этого простой конечный автомат.
Я предполагаю, что вы пытаетесь получить элементы списка HTML. Поскольку вы не указываете, какой язык вы используете, вот вам небольшой псевдокод:
Псевдокод:
while (iterating through the text)
if (<li> matched)
find position to </li>
put the substring between <li> to </li> to a variable
Конечно, существует множество сторонних библиотек, которые делают подобные вещи. В зависимости от среды разработки у вас может быть функция, которая уже делает это (например, javascript).