### Поиск словоформ какого-либо слова ``` using System.Text.RegularExpressions; string s = "Бык тупогуб, тупогубенький бычок, у быка губа бела была тупа"; Regex regex = new Regex(@"туп(\w*)"); MatchCollection matches = regex.Matches(s); if (matches.Count > 0) { foreach (Match match in matches) Console.WriteLine(match.Value); } else { Console.WriteLine("Совпадений не найдено"); } ``` Результат: ``` тупогуб тупогубенький тупа ``` ### Поиск с группами ``` using System.Text.RegularExpressions; string text = "One car red car blue car"; string pat = @"(\w+)\s+(car)"; Regex r = new Regex(pat, RegexOptions.IgnoreCase); Match m = r.Match(text); int matchCount = 0; // можно искать не одно вхождение, а несколько while (m.Success) { Console.WriteLine("Match"+ (++matchCount)); // тут можно было бы перебирать по длине массива Groups, // но мы по своему шаблону и так знаем, что у нас две подгруппы for (int i = 1; i <= 2; i++) { Console.WriteLine($"Group {i}='{m.Groups[i]}'"); } // поиск следующей подстроки соответсвующей шаблону m = m.NextMatch(); } ``` Результат: ``` Match1 Group 1='One' Group 2='car' Match2 Group 1='red' Group 2='car' Match3 Group 1='blue' Group 2='car' ``` ### Проверка на соответствие строки формату ``` string pattern = @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$"; while (true) { Console.WriteLine("Введите адрес электронной почты"); string email = Console.ReadLine(); if (Regex.IsMatch(email, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine("Email подтвержден"); break; } else { Console.WriteLine("Некорректный email"); } } ``` Результат: ``` Введите адрес электронной почты ejahaj@gmail.com Email подтвержден ``` ### Задание "Номера автобусов" ``` Console.Write("Номер: "); var number = Console.ReadLine(); if (number.Length == 6) { string pattern = @"[ABCEHKOPTXY]\d{3}[ABCEHKOPTXY]{2}"; if (Regex.IsMatch(number, pattern) == true) { Console.WriteLine("yes"); } else { Console.WriteLine("no"); } } else if (number.Length < 6 | number.Length > 6) { Console.WriteLine("bad length"); } ``` Результат: ``` Номер: B825YX yes ``` ### Задание "Стрелки" ``` using System.Text.RegularExpressions; var strel = Console.ReadLine(); var pattern = @"<--<<"; var pattern2 = @">>-->"; Regex regex = new Regex(pattern); Regex regex2 = new Regex(pattern2); MatchCollection matches = regex.Matches(strel); MatchCollection matches2 = regex2.Matches(strel); Console.WriteLine(matches.Count + matches2.Count); ``` Результат: ``` >>-->>>-->>>--><--<<<--<<>>--><--<<<--<<>>--><--<< 10 ```