Это регулярное выражение должно соответствовать тому, что вы хотите:
(start((?!start).)*?end)
Используйте метод re.findall
и однострочный модификатор re.S
, чтобы получить все вхождения в многострочной строке:
re.findall('(start((?!start).)*?end)', text, re.S)
Смотрите здесь .