dpokatski 9c1751a445 lab11 | 8 月之前 | |
---|---|---|
.. | ||
readme.md | 8 月之前 |
Пример регулярки в С
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");
}
}
Вывод:
Введите адрес электронной почты
archebalu2006@gmail.com
Email подтвержден
Замена и метод Replace
string s = "Мама мыла раму. ";
string pattern = @"\s+";
string target = " ";
Regex regex = new Regex(pattern);
string result = regex.Replace(s, target);
Лабораторную по теме "строки" реализовать через регулярки (где это возможно)
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++;
Console.WriteLine($"Промежуточная сумма на шаге {count}: {sum}");
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("Из одного имени нельзя получить другое.");
}