Я ничего не знаю .NET. В некоторых других мирах следующее может обрабатывать поисковую часть операции:
\[(.*?)\][\s\n\r]+\[(.*?)\]\((\d\d)\)
Вставьте это в формат "поиска" для регулярного выражения .NET (что бы это ни было), напишите свои выходные данные. Если разрыв строки может произойти в середине слова, то это может иметь проблемы. Обратите внимание, что вышеприведенное также вытягивает длину типа, так что получится
MiddleName varchar 50
Чтобы обойтись без третьей обратной ссылки, просто оставьте ее вне замены (впустую) или сделайте
\[(.*?)\][\s\n\r]+\[(.*?)\]\(\d\d\)
Много хороших способов сделать это. Как обычно, просто убедитесь, что вы понимаете потенциальную изменчивость ввода.