Від автора: вітаю вас, друзі. У цій статті ми поговоримо про квантификаторах в регулярних виразах і розглянемо приклади їх використання. Приступимо?
Почнемо статтю з визначення того, що таке кванторів у регулярних виразах і які кванторів нам доступні. Отже квантифікатори — це метасимволи, що дозволяють задати кількість повторень символу або групи символів в рядку.
Доступні нам наступні кванторів:
* — будь-кількість входжень попереднього символу
+ — одне або більше примірників попереднього символу
? — вказує на необов’язковість попереднього символу
{n} — точну кількість входжень попереднього символу
{n,} — мінімальна кількість входжень попереднього символу
{n,m} — можливо кількість входжень попереднього символу від n до m
Власне це і все кванторів, які ми можемо використовувати в регулярних виразах. Використовуючи їх, ми можемо дуже гнучко валідувати вхідні дані.
І відразу простий приклад. Нам необхідно скласти регулярний вираз, яке знайде посилання в рядку.
$pattern = ‘# .+#’;
Як бачимо, ми використовували двічі квантіфікатор +, який передбачає наявність як мінімум одного символу, зазначеного перед квантификатором. Дана частина шаблону — [^”]+ — збігається з будь-якими символами, крім лапок. Ну а ця частина — .+ — співпаде із будь-яким символом, крім переведення рядка. Квантіфікатор + дозволяє повторювати кількість таких символів будь-яке число раз, але не менше одного, тобто повинен бути як мінімум один символ.
А що буде, якщо в рядку буде порожня посилання?
У цьому випадку шаблон не спрацював, оскільки в атрибуті href повинен перебувати хоча б 1 символ, цього вимагає квантіфікатор +. Як же вирішити завдання? Просто. Достатньо замість метасимвола + використовувати квантіфікатор *, який передбачає повторення символу від нуля до нескінченної кількості разів. Тобто він робить символ необов’язковим і допускає його повторення будь-яку кількість разів.
А ось тепер все працює. По суті квантіфікатор + це аналог такого запису — {1,}. А квантіфікатор * такий — {0,}.
На цьому у мене все. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!