Жадность регулярных выражений

Пытаюсь выцепить содержимое div блоков при помощи регулярных выражений. Допустим есть вот такая ситуация

text = "<div class="text-underline"><u>Программист</u></div>"

Написал такое регулярное выражение

text = re.findall(r'>.{1,}?<', text)

Ожидаю увидеть на выходе >Программист 1C 8< но получаю ><u>Программист 1C 8<


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

Автор решения: Qwertiy

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

Если необходимо что-то исключить, то стоит это явно и запрещать: >[^>]+?<

var text = `<div class="text-underline"><u>Программист</u></div>`

console.log(text.match(/>[^>]+?</))

А в более сложных случаях надо запрещать через (?:(?!что-то).)+.

→ Ссылка