Квантификаторы в регулярных выражений
В прошлой статье мы с Вами начали учиться составлять регулярные выражения, однако, мы рассмотрели только первую часть возможностей: использование метасимволов. И сегодня мы с Вами рассмотрим квантификаторы (или как их ещё называют - квантификаторы повторений) в регулярных выражениях.
Мы с Вами рассматривали метасимволы, И Вы должны помнить, что один метасимвол соответствует только одному символу. И это не всегда удобно, так как у нас может идти целая определённая последовательность символов. И вот для задания последовательности определённых символов используются квантификаторы повторений.
Как и в прошлый раз, приведу таблицу с различными квантификаторами и их пояснением.
Квантификатор | Что делает |
* | Соответствие возникнет, если предыдущий символ будет повторяться любое число раз (в том числе и 0 раз). |
+ | Соответствие возникнет, если предыдущий символ будет повторяться хотя бы один раз. То есть отличие от квантификатора *, здесь требуется, чтобы предшествующий символ был бы хотя бы один раз. |
? | Соответствие возникнет, если предыдущего символа вообще не было, либо он был только один раз. |
{n} | Соответствие возникнет, если предыдущий символ будет повторяться ровно n раз. |
{n,} | Соответствие возникнет, если предыдущий символ будет повторяться n или более раз. |
{n,m} | Соответствие возникнет, если предыдущий символ будет повторяться от n до m раз. |
Здесь всё прозрачно, однако, наверняка у Вас возникет вопрос, что это за такой "предыдущий символ"?. Собственно, это предыдущий символ регулярного выражения, в частности, метасимвол. Давайте приведу пример, чтобы стало всё понятнее:
/[0-9]?ab*/
Переведу данное регулярное выражение на русский язык. Строка, которая "содержит последовательность символов, начинающуюся с цифры, либо с её отсутствия, затем идёт один символ "a", а потом любое число раз символа "b"", будет соответствовать регулярному выражению, написанному выше.
Например, такая строка будет соответствовать данному регулярному выражению: "не_важно_что0abbbbbне_важно_что", либо такая "ab", либо такая "a".
Надеюсь, что принцип использования квантификаторов в регулярных выражения Вам понятен, а в следующей статье мы рассмотрим последнюю группу элементов, используемых в регулярных выражениях, которую называют спецсимволы.
-
- Михаил Русаков
Комментарии (3):
Михаил, у Вас ошибка в последнем предложении в пред-пред последнем слове("а в следующей статье мы рассмотрим последнюю группу элементов, используемых в регулярных выражениях, которая называют спецсимволы.") Слово "которая" надо заменить на "которую"
Ответить
Спасибо, исправил!
Ответить
Далее по Вашему тексту - Квантификатор - ? Соответствие возникнет, если предыдущего символа вообще не было, либо он был только один раз. На практике когда в строке str="hello world" ищу соответствие /l?/ то почему то соответствие найдено! Хотя вы пишите что соответствие будет найдено лишь и только тогда, когда символа либо вообще нет, либо он используется только один раз. На самом деле формулировка должна быть такой - Обозначает, что элемент может как присутствовать, так и отсутствовать. Если элементов более одного, то он есть, соответствие тоже.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.