Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритми та структури даних ЗПІ-91-20210115T104612Z-001 / Лекція 14. Регулярні вирази.docx
Скачиваний:
40
Добавлен:
15.01.2021
Размер:
56.28 Кб
Скачать

Приклад 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»