Регулярные выражения для почты - C#
Формулировка задачи:
В сообщении содержаться почты, формата n@s.d, где n имя может содержать буквы, цифры, точки, тире(тире и точка не могут быть последними или первыми) больше 3 штук, s только буквы больше 3 меньше 8, d только буквы 2 или 3 символа. Отсортировать все совпадения по количеству символов в имени n. Если у двух совпало количество, тогда отсортировать по s и если нужно то и по d.
removed@mail.ru removed@mail.ru removed@mail.ru ert4y6.@gmail.com removed@mail.ru removed@mail.ru removed@mail.ru
Нужно использовать регулярные выражения.
Напишите пожалуйста паттерн правильный,я в них просто путаюсь,а остальное я знаю,как делать
Решение задачи: «Регулярные выражения для почты»
textual
Листинг программы
using System; using System.Linq; using System.Text.RegularExpressions; class Program { static void Main() { var message = @"barabashka@mail.ru [email]ert4y6@gmail.com[/email] [email]llk.llk@tty.vb[/email] ert4y6.@gmail.com [email]er@erer.rr[/email] [email]fghfh@t.com[/email] [email]qwqe@rr4.kz[/email]"; var pattern = @" (?<n> # группа n (?![.\-]) # не может начиться с тире или точки [a-zA-Z0-9.]{4,} # может содержать буквы, цифры, точки, тире, больше 3 шту (?<![.\-]) # не может заканчиваться тире или точкой ) @ # собачка между n и s (?<s> # группа s [a-zA-Z]{4,7} # только буквы больше 3 меньше 8 ) \. # точка между s и d (?<d> # группа d [a-zA-Z]{2,3} # только буквы 2 или 3 символа )"; var mails = Regex.Matches(message, pattern, RegexOptions.IgnorePatternWhitespace) .Cast<Match>() .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)); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д