Регулярные выражения для почты - 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
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Text.RegularExpressions;
  4.  
  5. class Program
  6. {
  7.     static void Main()
  8.     {
  9.         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]";
  10.         var pattern = @"
  11.            (?<n>                   # группа n
  12.                (?![.\-])           # не может начиться с тире или точки
  13.                [a-zA-Z0-9.]{4,}   # может содержать буквы, цифры, точки, тире, больше 3 шту
  14.                (?<![.\-])          # не может заканчиваться тире или точкой
  15.            )
  16.            @                       # собачка между n и s
  17.            (?<s>                   # группа s
  18.                [a-zA-Z]{4,7}       # только буквы больше 3 меньше 8
  19.            )
  20.            \.                      # точка между s и d
  21.            (?<d>                   # группа d
  22.                [a-zA-Z]{2,3}       # только буквы 2 или 3 символа
  23.            )";
  24.        
  25.         var mails = Regex.Matches(message, pattern, RegexOptions.IgnorePatternWhitespace)
  26.             .Cast<Match>()
  27.             .OrderBy(match => match.Groups["n"].Length)
  28.             .ThenBy(match => match.Groups["s"].Length)
  29.             .ThenBy(match => match.Groups["d"].Length)
  30.             .Select(match => match.Value)
  31.             .ToArray();
  32.  
  33.         Console.WriteLine(string.Join("\r\n", mails));
  34.         Console.ReadLine();
  35.     }
  36. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы