- •Алгоритми та структури даних Лекція 14. Регулярні вирази в c#
- •IsMatch - перевіряє чи містить рядок хоча б один рядок, який відповідає шаблону регулярного виразу. Повертає true – якщо відповідає, false – якщо ні.
- •Приклад 2
- •Символи повторення
- •Символи прив'язки
- •Cимволи вибору
- •Інші символи
- •Приклад 7
Приклад 2
static void Main(string[] args)
{
//пошук слів у тексті
string mytext = "Це текст, який місить слова таємно та для службового використання. "+
"З цього тексту потрібно виділити слова таємно та для для службового використання."+
"Це можна зробити за допомогою методів роботи з рядками чи з допомогою регулярних виразів.";
Regex myReg = new Regex("таємно"); // Створення регулярного виразу
// Створення регулярного виразу
Match match = myReg.Match(mytext);
Console.WriteLine(match.Length); //довжина слова
Console.WriteLine(match.Value); //саме слово
Console.WriteLine(match.Index); //позиція в тексті
Console.ReadKey();
}
Результат
Matches - повертає всі під-рядки, які відповідають шаблону у вигляді колекції типу MatchCollection. Кожен елемент цієї колекції має тип Match.
Приклад 3.
static void Main(string[] args)
{
//пошук слів у тексті
string mytext = "Це текст, який місить слова таємно та для службового використання. "+
"З цього тексту потрібно виділити слова таємно та для для службового використання."+
"Це можна зробити за допомогою методів роботи з рядками чи з допомогою регулярних виразів.";
Regex myReg = new Regex("таємно"); // Створення регулярного виразу
MatchCollection matches = myReg.Matches(mytext);
Console.WriteLine(matches.Count); // кількість слів "таємно" в тексті
foreach (Match m in matches)
Console.WriteLine(m.Value); // Виведення всіх слів "таємно"
Console.ReadKey();
}
Результат
Replace - повертає рядок, в якому замінені всі під-рядки, які відповідають шаблону, новим рядком:
Приклад 4.
class Program
{
static void Main(string[] args)
{
//пошук слів у тексті
string mytext = "Це текст, який місить слова таємно та для службового використання. "+
"З цього тексту потрібно виділити слова таємно та для для службового використання.";
Regex myReg = new Regex("таємно"); // Створення регулярного виразу
mytext = myReg.Replace(mytext, "відкрито");
Console.WriteLine(mytext);
Console.ReadKey();
}
}
Результат
Split - повертає масив рядків, отриманий в результаті розділення тексту відповідним шаблоном регулярного виразу:
Приклад 5.
static void Main(string[] args)
{
//пошук слів у тексті
string mytext = "Це текст, який місить слова таємно та для службового використання. "+
"З цього тексту потрібно виділити слова таємно та для для службового використання.";
Regex myReg = new Regex(" "); // Створення регулярного виразу
string[] words = myReg.Split(mytext); // Масив імен
foreach(string word in words)
Console.WriteLine(word);
Console.ReadKey();
}
У прикладах вище розглядалися дуже прості, однозначні регулярні вирази без використання спец-символів.
Спеціальні символи
Класи символів
Позначення |
Опис |
Шаблон |
Відповідність |
[Группа_символів] |
Будь-який з перерахованих в дужках символів. Використовуючи тире можна вказати діапазон символів, наприклад, [a-f] - те саме, що [abcdef] |
[abc] |
«a» в «and» |
[^ Группа_символів] |
Будь-який символ, крім перерахованих в дужках |
[^ abc] |
«n», «d» в «and» |
\ d |
Цифра. Еквівалентно [0-9] |
\ d |
"1" в "data1» |
\ D |
Будь-який символ, крім цифр. Еквівалентно [^ 0-9] |
\ D |
«y» в «2014y» |
\ w |
Цифра, літера (латинський алфавіт) або знак підкреслення. Еквівалентно [0-9a-zA-Z_] |
\ w |
«1», «5», «з» в «1.5с» |
\ W |
Будь-який символ, крім цифр, букв (латинський алфавіт) і знаку підкреслення. Еквівалентно [^ 0-9a-zA-Z_] |
\ W |
«.» В «1.5с» |
\ s |
Пробільний символ (пробіл, табуляція, переведення рядка) |
\ s |
«» в «c sharp» |
\ S |
Будь-який символ, крім пробілів |
\ S |
«c» «s» «h» «a» «r» «p» в «c sharp» |
