Регулярные выражения для почты - 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д