Python, Regex: не жадность не работает при наложении?
MCVE фрагмент кода Python
import re
str = "aa {bb cc {dd} ee"
print(re.search("{.*}", str).group())
print(re.search("{.*?}", str).group())
Выход
{bb cc {dd}
{bb cc {dd}
Однако я бы ожидал
{bb cc {dd}
{dd}
Почему не дополнительный ?
сделать Regex нежадным? Это как-то связано с перекрытием?
1 ответ
Решение
Это не жадный, но не жадный не означает "найти наименьшее, что соответствует", это означает "найти наименьшее, что соответствует, начиная с первого места в строке, у которой есть совпадение". Первая открытая фигурная скобка - это начало матча, а самая маленькая вещь, которая соответствует {bb cc {dd}
,