using System; using System.Linq; using System.Text.RegularExpressions; class Program { static void Main() { var message = @"barabashka@mail.ru ert4y6@gmail.com llk.llk@tty.vb ert4y6.@gmail.com er@erer.rr fghfh@t.com qwqe@rr4.kz"; var pattern = @" (? # группа n (?![.\-]) # не может начинаться с тире или точки [a-zA-Z0-9.]{4,} # может содержать буквы, цифры, точки, тире, больше 3 штук (? # группа s [a-zA-Z]{4,7} # только буквы больше 3 меньше 8 ) \. # точка между s и d (? # группа d [a-zA-Z]{2,3} # только буквы от 2 до 3 символов )"; var mails = Regex.Matches(message, pattern, RegexOptions.IgnorePatternWhitespace) .Cast() .OrderBy(match => match.Groups["n"].Length) .ThenBy(match => match.Groups["s"].Length) .ThenBy(match => match.Groups["d"].Length) .Select(match => match.Value) .ToArray(); Console.WriteLine(string.Join("\r\n", mails)); } }