Я предполагаю, что вы хотите
- найти два или более последовательных пробела и заменить их одним пробелом, а
- найдите два или более последовательных символа новой строки и замените их одним символом новой строки.
Если это правильно, тогда вы можете использовать
resultString = Regex.Replace(subjectString, @"( |\r?\n)\1+", "$1");
Это сохраняет исходный «тип» пробелов без изменений, а также правильно сохраняет окончания строк Windows. Если вы также хотите «сжать» несколько вкладок в одну, используйте
resultString = Regex.Replace(subjectString, @"( |\t|\r?\n)\1+", "$1");
Чтобы сжать строку новых строк и пробелов (любое количество каждого) в одну новую строку, используйте
resultString = Regex.Replace(subjectString, @"(?:(?:\r?\n)+ +){2,}", @"\n");