Я пытаюсь сопоставить блоки текста, которые содержат определенный текст внутри них. Каждый блок четко определяется стандартными текстовыми шаблонами начала / конца.
В приведенном ниже примере я хочу сопоставить шаги 1 и 3 от «начала шага» до «конца шага», так как они содержат текст «database: dev». Однако мое текущее регулярное выражение соответствует шагу 1 в порядке, но затем совпадает с шагами 2 и 3 в одном совпадении. Это, вероятно, легче увидеть на примере: https://regex101.com/r/56tfOQ/3/
Мне нужно указать, что каждое совпадение может содержать только один «шаг с начала», но я не могу понять, как это сделать.
Регулярное выражение, которое я сейчас использую:
(?msi)step start.*?database:dev.*?step end
Пример текста:
step start
name:step1
database:dev1
step end
step start
name:step2
database:test1
step end
step start
name:step3
database:dev2
step end
step start
name:step4
database:test2
step end