No Description

sbakhtina b196d98171 Обновить 'README.md' 10 months ago
ConsoleApp2 2e3807f5e4 2nd commit 10 months ago
.gitignore.txt 4b0a6ae650 1st commit 11 months ago
README.md b196d98171 Обновить 'README.md' 10 months ago

README.md

Регулярные выражения


Регулярки в C#

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("Совпадений не найдено");
}
тупогуб
тупогубенький
тупа

Поиск с группами

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'

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

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");
    }
}
Введите адрес электронной почты
sopha_2006@mail.ru
Email подтвержден

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

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));

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

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);

Стрелки

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("нельзя");
}