/ 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 : "—")}");
}
}
}