using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        while (true)
        {
            ShowMenu();
            string choice = Console.ReadLine();

            if (choice == "5") break;

            ProcessChoice(choice);
            Console.WriteLine();
        }
    }

    static void ShowMenu()
    {
        Console.WriteLine("Выберите операцию:");
        Console.WriteLine("1. Проверка email-адреса");
        Console.WriteLine("2. Поиск всех дат в формате dd.MM.yyyy");
        Console.WriteLine("3. Замена всех цифр в тексте на *");
        Console.WriteLine("4. Разбиение строки по запятым, точкам или пробелам");
        Console.WriteLine("5. Выход");
    }

    static void ProcessChoice(string choice)
    {
        switch (choice)
        {
            case "1":
                ValidateEmail();
                break;
            case "2":
                FindDates();
                break;
            case "3":
                ReplaceDigits();
                break;
            case "4":
                SplitString();
                break;
            default:
                Console.WriteLine("Некорректный выбор. Попробуйте снова.");
                break;
        }
    }

    static void ValidateEmail()
    {
        Console.WriteLine("Введите email-адрес:");
        string email = Console.ReadLine();
        string emailPattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
        bool isEmailValid = Regex.IsMatch(email, emailPattern);
        Console.WriteLine(isEmailValid ? "Email-адрес корректен" : "Email-адрес некорректен");
    }

    static void FindDates()
    {
        Console.WriteLine("Введите текст для поиска дат:");
        string textForDates = Console.ReadLine();
        string datePattern = @"\b\d{2}\.\d{2}\.\d{4}\b";
        MatchCollection dates = Regex.Matches(textForDates, datePattern);
        
        if (dates.Count > 0)
        {
            Console.WriteLine("Найденные даты:");
            foreach (Match date in dates)
                Console.WriteLine(date.Value);
        }
        else
        {
            Console.WriteLine("Даты не найдены");
        }
    }

    static void ReplaceDigits()
    {
        Console.WriteLine("Введите текст для замены цифр:");
        string textForDigits = Console.ReadLine();
        string replacedText = Regex.Replace(textForDigits, @"\d", "*");
        Console.WriteLine("Результат замены:");
        Console.WriteLine(replacedText);
    }

    static void SplitString()
    {
        Console.WriteLine("Введите строку для разбиения:");
        string textForSplit = Console.ReadLine();
        string[] parts = Regex.Split(textForSplit, @"[.,\s]+");
        Console.WriteLine("Разбитая строка:");
        foreach (string part in parts)
            Console.WriteLine(part);
    }
}
