Нет описания

jgrebnev d41cd00a02 t5r 8 месяцев назад
.gitignore.txt 62ee81afd3 1st commit 9 месяцев назад
readme.md d41cd00a02 t5r 8 месяцев назад

readme.md

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

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 = "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");
    }
}

Вывод:

Введите адрес электронной почты
yarik2006477@gmail.com
Email подтвержден

Введите адрес электронной почты
dasdawe
Некорректный email
Введите адрес электронной почты
yarik2006477@gmail.com
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("нельзя");
}