Вы можете использовать
(?sim)^terms:.*?(?=(?:\r?\n){2,}|\z)
См. Демоверсию .NET regex
Подробнее
(?sim)
- включить RegexOptions.Singleline
, RegexOptions.IgnoreCase
и Regex.Multiline
опции ^
- начало строки terms:
- литеральная подстрока .*?
- любые 0+ символов, как можно меньше (?=(?:\r?\n){2,}|\z)
- местоположение, за которым следуют 2 или более последовательностей разрыва строки (CRLF или LF) или конец строки.
ИСПОЛЬЗОВАНИЕ
var results = Regex.Matches(s, @"(?sim)^terms:.*?(?=(?:\r?\n){2,}|\z)")
.Cast<Match>()
.Select(x => x.Value)
.ToList();
Или разделить на 2 или более разрывов строк с помощью
(?:\r?\n){2,}
См. это демонстрационное приложение .NET regex .Он просто соответствует 2 или более повторениям необязательных символов CR и LF.
USAGE
var results = Regex.Split(s, @"(?:\r?\n){2,}");