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},

Другие вопросы по тегам