
- •Алгоритми та структури даних Лекція 14. Регулярні вирази в c#
- •IsMatch - перевіряє чи містить рядок хоча б один рядок, який відповідає шаблону регулярного виразу. Повертає true – якщо відповідає, false – якщо ні.
- •Приклад 2
- •Символи повторення
- •Символи прив'язки
- •Cимволи вибору
- •Інші символи
- •Приклад 7
Символи повторення
Позначення |
Опис |
Шаблон |
Відповідність |
* |
Відповідає попередньому елементу нуль або більше разів |
\ d *. |
«a», «1b», «23c» в «a1b23c» |
+ |
Відповідає попередньому елементу один або більше разів |
\ d +. |
«1b», «23c» в «a1b23c» |
? |
Відповідає попередньому елементу нуль або один раз |
\ d? \ D |
«a», «1b», «3с» в «a1b23c» |
{n} |
Відповідає попередньому елементу, який повторюється рівно n раз |
\ d {2} |
«43», «54», «82» в «2,43,546,82» |
{n,} |
Відповідає попередньому елементу, який повторюється мінімум n раз |
\ d {2,} |
«43», «546», «82» в «2,43,546,82» |
{n, m} |
Відповідає попередньому елементу, який повторюється мінімум n раз і максимум m |
\ d {2,} |
«43», «546», «821» в «2,43,546,8212» |
Символи прив'язки
Позначення |
Опис |
Шаблон |
Відповідність |
^ |
Відповідність має перебувати на початку рядка |
^ \ d {2} |
«32» в «32,43,54» |
$ |
Відповідність має перебувати в кінці рядка або до символу \ n при багаторядковому пошуку |
\ d {2} $ |
«54» в «32,43,54» |
\ b |
Відповідність має перебувати на кордоні алфавітно-цифрового символу (\ w) і не алфавітно-цифрового (\ W) |
\ b \ d {2} |
«32», «54» в «32 a43 54» |
\ B |
Відповідність не повинно знаходитися на межі |
\ B \ d {2} |
«43» в «32 a43 54» |
\ G |
Відповідність має перебувати на позиції кінця попереднього відповідності |
\ G \ d |
"3", "2", "4" в "324.758" |
Cимволи вибору
Позначення |
Опис |
Шаблон |
Відповідність |
| |
Працює як логічне «АБО» - відповідає першому і / або другому шаблоном |
one | two |
«one», «two» в «one two three» |
(Група символів) |
Групуються набір символів в єдине ціле для якого далі можуть використовуватися + *? і т.д. Кожній такій групі призначається порядковий номер зліва направо, починаючи з 1. За цим номером можна посилатися на групу \ номер групи |
(one) \ 1 |
«oneone» в «oneone onetwoone» |
(?: Група символів) |
Те ж угрупування тільки без призначення номера групи |
(?: One) {2} |
«oneone» в «oneone onetwoone» |
Інші символи
Позначення |
Опис |
Шаблон |
Відповідність |
\ t |
Символ табуляції |
\ t |
|
\ v |
Символ вертикальної табуляції |
\ v |
|
\ r |
Символ повернення каретки |
\ r |
|
\ n |
Символ переводу рядка |
\ n |
|
\f |
Символ переводу сторінки |
\ f |
|
\ |
Символ, який дозволяє екранувати спеціальні символи, щоб ті сприймалися буквально. Наприклад, щоб була відповідність символу зірочки, шаблон буде виглядати так \* |
\ d \. \ d |
"1.1», «1.2» в «1.1 1.2» |
У цих таблицях представлені далеко не всі елементи мови регулярних виразів, але їх цілком достатньо для більшості можливостей.
Приклади застосування регулярних виразів
Приклад 6. Перевірка правильності мобільного телефону
Форма 1: тільки цифри
class Program
{//перевірка правильності мобільного телефону
static void Main(string[] args)
{//тільки цифри, наприклад 0501101129
Regex myReg1 = new Regex(@"^([0-9]{10}$)");
Console.WriteLine(myReg1.IsMatch("0501101129"));
Console.ReadKey();
}
}
Форма 2: з вказівкою коду регіону, оператора, можливих пробілів і цифр [0-9].
class Program
{//перевірка правильності мобільного телефону
static void Main(string[] args)
{
//варіант 2. розширений номер.
// з вказівкою коду регіону, оператора, можливих пробілів і цифр
List<string> phoneList = new List<string>();
phoneList.Add("+380 501101129");
phoneList.Add("050 110 1129");
phoneList.Add("(380) 501101129");
Regex myReg1 = new Regex(@"\(?([0-9]{3})\)?[ ]?([0-9]{3})[ ]?([0-9]{4})");
foreach (var list in phoneList)
{
if (myReg1.IsMatch(list))
Console.WriteLine(true);
else
Console.WriteLine(false);
}
Console.ReadKey();
}
}