Квантификаторы в регулярных выражениях

Квантификаторы в регулярных выражениях

От автора: приветствую вас, друзья. В этой статье мы поговорим о квантификаторах в регулярных выражениях и рассмотрим примеры их использования. Приступим?

Начнем статью с определения того, что такое квантификаторы в регулярных выражениях и какие квантификаторы нам доступны. Итак квантификаторы — это метасимволы, позволяющие задать количество повторений символа или группы символов в строке.

Доступны нам следующие квантификаторы:

* — любое кол-во вхождений предшествующего символа

+ — одно или более вхождений предшествующего символа

? — указывает на необязательность предшествующего символа

{n} — точное кол-во вхождений предшествующего символа

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

{n,m} — возможно кол-во вхождений предшествующего символа от n до m

Собственно это и все квантификаторы, которые мы можем использовать в регулярных выражениях. Используя их, мы можем очень гибко валидировать входящие данные.

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

$pattern = '# <a href="[^"]+">.+</a>#';

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

А что будет, если в строке будет пустая ссылка?

В этом случае шаблон не сработал, поскольку в атрибуте href должен находиться хотя бы 1 символ, этого требует квантификатор +. Как же решить задачу? Просто. Достаточно вместо метасимвола + использовать квантификатор *, который предполагает повторение символа от нуля до бесконечного числа раз. Т.е. он делает символ необязательным и допускает его повторение любое кол-во раз.

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

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

Хотите изучить регулярные выражения на PHP?

Прямо сейчас посмотрите 12-ти часовой курс по регулярным выражениям на PHP!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree