Кажется, что работает следующий шаблон, по крайней мере, с помощью демонстрационного инструмента:
- TEST\b.*?(?=- (?:ERROR|TEST|FAILED)|$)
Демо
Шаблон говорит :
- TEST\b match "- TEST" followed by a word boundary
.*? then match all content up until looking ahead and seeing
(?=- (?:ERROR|TEST|FAILED)|$) the start of another block with ERROR, TEST, or FAILED
Обратите внимание, что я использую режим точка-все, а также я отключил привязки ^
и $
, так что они означают начало и конец всего ввода (а не каждая строка).