Регулярные выражения для почты - 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();
    }
}

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


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

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

13   голосов , оценка 4 из 5
Похожие ответы