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

Алгоритми та структури даних Лекція 14. Регулярні вирази в c#

Регулярний вираз - це шаблон, складений з символів і спец-символів, який дозволяє знаходити під-рядки відповідні цим шаблоном в інших рядках. Спец-символів і різних правил їх комбінування є дуже багато, тому регулярні вирази можна навіть назвати мовою програмування.

Регулярні вирази надають багато можливостей, деякі з них:

- Замінювати в рядку всі однакові слова іншим словом, або видаляти такі слова;

- Виділяти з рядка необхідну частину. Наприклад, з будь-якого посилання (http://mycsharp.ru/post/33/2013_10_19_virtualnye_metody_v_si-sharp_pereopredelenie_metodov.html) виділяти тільки доменну частину (mycsharp.ru);

- Перевіряти чи відповідає рядок заданому шаблону. Наприклад, перевірити, чи правильно введено email, телефон тощо;

- Перевіряти, чи містить рядок заданий під-рядок;

- Отримувати від рядка всі входження під-рядка, відповідні шаблоном регулярного виразу. Наприклад, отримати всі дати з рядка.

Початок роботи з регулярними виразами

Для того, щоб працювати з регулярними виразами необхідно підключити простір імен using System.Text.RegularExpressions. У С# роботу з регулярними виразами надає клас Regex. Створення об’єкту регулярного виразу має наступний вигляд:

 Regex myReg = new Regex ([шаблон]);

Тут [шаблон] - це рядок містить символи і спец-символи.

У Regex також є і другий конструктор, який приймає додатковий параметр - опції пошуку. Це ми розглянемо далі.

Основні методи класу Regex

IsMatch - перевіряє чи містить рядок хоча б один рядок, який відповідає шаблону регулярного виразу. Повертає true – якщо відповідає, false – якщо ні.

Приклад 1. Пошук потрібного тексту.

using System.Text.RegularExpressions;

namespace Lab_14_RegularExpression

{

class Program

{

static void Main(string[] args)

{

//пошук слів у тексті

string mytext = "Це текст, який місить слова таємно та для службового використання. "+

"З цього тексту потрібно виділити слова таємно та для для службового використання."+

"Це можна зробити за допомогою методів роботи з рядками чи з допомогою регулярних виразів.";

Regex myReg = new Regex("таємно"); // Створення регулярного виразу

Regex myReg1 = new Regex("для службового використання"); // Створення регулярного виразу

Console.WriteLine(myReg.IsMatch(mytext)); // True

Console.WriteLine(myReg1.IsMatch(mytext)); // True

Regex myReg2 = new Regex("З цього тексту потрібно виділити слова");

Console.WriteLine(myReg2.IsMatch(mytext)); // True

Console.ReadKey();

}

}

}

В цьому прикладі є 3 шаблони. Перший шукає 1 слово. Другий і третій шукають входження підрядків, які є у текті. Метод IsMatch перевіряє, чи містить заданий текст під-рядок, який відповідає шаблону.

Match - повертає перший підрядок, який відповідає шаблону, у вигляді об'єкта класу Match. Клас Match надає різну інформацію про підрядок - довжину, індекс, саме значення і інше.