readme.md 4.7 KB

регулярки в CS

using System;
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 = "Black 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));

    for (int i = 1; i <= 2; i++)
    {
        Console.WriteLine($"Group {i}='{m.Groups[i]}'");
    }

    m = m.NextMatch();
}

Вывод:

Match1
Group 1='Black'
Group 2='car'
Match2       
Group 1='red'
Group 2='car'
Match3       
Group 1='blue'
Group 2='car'

проверка на соответствие строки формату

using System.Text.RegularExpressions;
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");
    }
}

вывод:

введите адрес электронной почты
uriq3@Mail.ru
email подтвержден

введите адрес электронной почты
аыфафцафыа
некорректный email
введите адрес электронной почты
uriq3@Mail.ru
еmail подтвержден

номера автобусов

using System.Text.RegularExpressions;

string Jo = @"^[A-Z]{1}\d{3}[A-Z]{2}$";

Console.WriteLine("введите номер автобуса; ");
string Car;
do
{
    Car = Console.ReadLine();
    if (!string.IsNullOrEmpty(Car))
    {
        if (Regex.IsMatch(Car, Jo))
        {
            Console.WriteLine("номер правильный ");
        }
        else
        {
            Console.WriteLine("номер неправильный ");
        }
    }
} while (!string.IsNullOrEmpty(Car));

вывод:

Z1ASC32
номер неправильный 
5YDW832
номер неправильный 

сжатие бинарных последовательностей

using System.Text.RegularExpressions;

Console.WriteLine("введите последовательность: ");
string voi = Console.ReadLine();

string comp = CompressBinary(voi);

string CompressBinary(string? s)
{ 
    string comp = Regex.Replace(voi, "1+|0+", m => ((char)('a' + m.Value.Length - 1)).ToString());
    return comp;
}

Console.WriteLine(  comp);

вывод:

введите последовательность:
111223
c223

стрелки

using System.Text.RegularExpressions;

Console.WriteLine("введите символы: ");
string strel = Console.ReadLine();
string patt = @"(>>-->)|(<--<<)";

MatchCollection match = Regex.Matches(strel, patt);
        
Console.WriteLine("количество стрел: " + match.Count);

нумеролог

Console.WriteLine("Введите время жизни: ");
string voi = Console.ReadLine();

int count = 0;

while (voi.Length > 1)
{
int sum = voi.Sum(c => c - '0');
count++;
voi = sum.ToString();
}

Console.WriteLine($"количество операций: {count}");
Console.WriteLine($"полученная цифра: {voi}");

перестановка

using System.Text.RegularExpressions;

Console.WriteLine("введите два слова: "); string name1 = Console.ReadLine(); string name2 = Console.ReadLine();

name1 = Regex.Replace(name1.ToLower(), @"\s+", ""); name2 = Regex.Replace(name2.ToLower(), @"\s+", "");

char[] name1Chars = name1.ToCharArray(); Array.Sort(name1Chars); string sortedName1 = new string(name1Chars);

char[] name2Chars = name2.ToCharArray(); Array.Sort(name2Chars); string sortedName2 = new string(name2Chars);

if (sortedName1.Equals(sortedName2)) {

Console.WriteLine("можно");

} else {

Console.WriteLine("нельзя");

} ```