Вы можете использовать это регулярное выражение для сопоставления или подсчета количества заголовков в соответствии с заданным вами текстом, согласно которому за заголовком будут следовать две новые строки и перед ними будет по крайней мере две строки.
(?:\r?\n\r?\n|\A\r?\n?)[^\r\n]+(\r?\n){2}
Проверьте это демо
Я включил \r
опционально, чтобы он работал как для Windows, так и для Linux, но если ваши строки заканчиваются только на Linux, то вы можете удалить \r
из него.
Кроме того, если вы хотите сопоставлять и извлекать только заголовки, вы можете использовать группирование для захвата заголовка или использовать обходные пути, чтобы просто сопоставить заголовок. Вот групповая версия регулярного выражения, которая захватывает заголовок в group1,
(?:\r?\n\r?\n|\A\r?\n?)([^\r\n]+)(\r?\n){2}
Демонстрация соответствия заголовка в группе1
Также, проверено в Блокноте ++ 7.6.1