
- •Алгоритми та структури даних Лекція 14. Регулярні вирази в c#
- •IsMatch - перевіряє чи містить рядок хоча б один рядок, який відповідає шаблону регулярного виразу. Повертає true – якщо відповідає, false – якщо ні.
- •Приклад 2
- •Символи повторення
- •Символи прив'язки
- •Cимволи вибору
- •Інші символи
- •Приклад 7
Алгоритми та структури даних Лекція 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 надає різну інформацію про підрядок - довжину, індекс, саме значення і інше.