Brak opisu

ebakhtin 06a9d89967 first 6 miesięcy temu
Program.cs 06a9d89967 first 6 miesięcy temu
lab5_regex.csproj 06a9d89967 first 6 miesięcy temu
lab5_regex.sln 06a9d89967 first 6 miesięcy temu
readme.md 06a9d89967 first 6 miesięcy temu

readme.md

Поиск словоформ какого-либо слова

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