Жадность регулярных выражений
Пытаюсь выцепить содержимое 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(/>[^>]+?</))
А в более сложных случаях надо запрещать через (?:(?!что-то).)+.