Ваша проблема была бы простой, если бы у вас было только одно вхождение этого текста, и вам нужно было только один раз извлечь текст внутри маркеров. В этом случае будет работать что-то вроде следующего:
Message-ID:(.*?)Received:
Но если вы ожидаете, что в вашем файле будет несколько совпадений, вам нужно проделать дополнительную работу. Вот один шаблон, который должен работать:
(?:(?!Message-ID:).)*Message-ID:((?:(?!Received:)(?!Message-ID:).)*)Received:
Сделайте поиск по этому шаблону, а затем замените на $1
. Обратите внимание, что точка должна находиться в режиме новой строки, это означает, что .*
соответствует символам новой строки (этот режим включен в демонстрационной версии).
Демо