Кванторів у регулярних виразах

308

Від автора: вітаю вас, друзі. У цій статті ми поговоримо про квантификаторах в регулярних виразах і розглянемо приклади їх використання. Приступимо?

Почнемо статтю з визначення того, що таке кванторів у регулярних виразах і які кванторів нам доступні. Отже квантифікатори — це метасимволи, що дозволяють задати кількість повторень символу або групи символів в рядку.

Доступні нам наступні кванторів:

* — будь-кількість входжень попереднього символу

+ — одне або більше примірників попереднього символу

? — вказує на необов’язковість попереднього символу

{n} — точну кількість входжень попереднього символу

{n,} — мінімальна кількість входжень попереднього символу

{n,m} — можливо кількість входжень попереднього символу від n до m

Власне це і все кванторів, які ми можемо використовувати в регулярних виразах. Використовуючи їх, ми можемо дуже гнучко валідувати вхідні дані.

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

$pattern = ‘# .+#’;

Кванторів у регулярних виразах

Як бачимо, ми використовували двічі квантіфікатор +, який передбачає наявність як мінімум одного символу, зазначеного перед квантификатором. Дана частина шаблону — [^”]+ — збігається з будь-якими символами, крім лапок. Ну а ця частина — .+ — співпаде із будь-яким символом, крім переведення рядка. Квантіфікатор + дозволяє повторювати кількість таких символів будь-яке число раз, але не менше одного, тобто повинен бути як мінімум один символ.

А що буде, якщо в рядку буде порожня посилання?

Кванторів у регулярних виразах

У цьому випадку шаблон не спрацював, оскільки в атрибуті href повинен перебувати хоча б 1 символ, цього вимагає квантіфікатор +. Як же вирішити завдання? Просто. Достатньо замість метасимвола + використовувати квантіфікатор *, який передбачає повторення символу від нуля до нескінченної кількості разів. Тобто він робить символ необов’язковим і допускає його повторення будь-яку кількість разів.

Кванторів у регулярних виразах

А ось тепер все працює. По суті квантіфікатор + це аналог такого запису — {1,}. А квантіфікатор * такий — {0,}.

На цьому у мене все. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!