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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метки:

Похожие статьи:

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