Загрузка данных


/ 9. Комплексное задание с email, телефонами, фильтрацией и заменой
    static void Task9()
    {
        string text = @"Иван Петров, email: ivan.petrov@gmail.com, телефон: +7-999-123-45-67
Анна Смирнова, email: anna_smirnova@mail.ru, телефон: +7 (912) 555-88-99
John Smith, email: john.smith@company.com, телефон: +1-202-555-0173";

        // Часть 1 и 3: все email и только gmail.com
        var allEmails = Regex.Matches(text, @"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b");
        Console.WriteLine("Все email:");
        foreach (Match m in allEmails)
            Console.WriteLine(m.Value);

        var gmailEmails = Regex.Matches(text, @"\b[A-Za-z0-9._%+-]+@gmail\.com\b");
        Console.WriteLine("\nТолько gmail.com:");
        foreach (Match m in gmailEmails)
            Console.WriteLine(m.Value);

        // Часть 2 и 4: извлечение телефонов и замена
        string phonePattern = @"\+?\d[\d\s\-\(\)]{7,}\d";
        var phones = Regex.Matches(text, phonePattern);
        Console.WriteLine("\nТелефоны:");
        foreach (Match m in phones)
            Console.WriteLine(m.Value);

        string maskedText = Regex.Replace(text, phonePattern, "***PHONE***");
        Console.WriteLine("\nТекст с заменёнными телефонами:\n" + maskedText);

        // Часть 5: структурированный вывод
        var lines = text.Split('\n');
        Console.WriteLine("\nСтруктурированный вывод:");
        foreach (var line in lines)
        {
            var nameMatch = Regex.Match(line, @"^[А-ЯA-Z][а-яA-Za-z]+\s+[А-ЯA-Z][а-яA-Za-z]+");
            var emailMatch = Regex.Match(line, @"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b");
            var phoneMatch = Regex.Match(line, phonePattern);
            Console.WriteLine($"Имя: {(nameMatch.Success ? nameMatch.Value : "—")}, " +
                              $"Email: {(emailMatch.Success ? emailMatch.Value : "—")}, " +
                              $"Телефон: {(phoneMatch.Success ? phoneMatch.Value : "—")}");
        }
    }
}