Почему квантификатор {n, } не срабатывает как описано на MSDN?
@"(?<=Должник.*)([А-ЯЁ][а-яё]+[\-\s]?){3,}"[А-ЯЁ][а-яё]+
Вот эта часть распознается, как большая буква и затем маленькие буквы в количестве больше 1. Это точно то, что вы хотели получить? У вас по идее вообще не должно так работать.
Если у вас это работает, значит где-то уровнем выше вы вообще отключили чувствительность к регистру.
Или проще было бы написать [А-ЯЁа-яё]+.[\-\s]?
Тут выходит что у нас или есть пробел или нет пробела. То есть ИвановИванИванович тоже подойдет.
Думаю надо +, а не ?
Давайте для начала формализуем задачу.
Необходимо выбрать комбинации из двух или трёх слов, записанных прописными буквами и разделённых пробелами, причём слова могут быть составные через дефис, но не более одного дефиса в слове. Комбинации должны идти после слова "Должник:", между этим словом и комбинацией могут быть только пробельные символы. Всё верно?(?<=Должник:)\s+([А-ЯЁ]+(?:-[А-ЯЁ]+)?(?:\s[А-ЯЁ]+(?:-[А-ЯЁ]+)?){1,2})