Оглавление

Повторяющиеся шаблоны

Выше   приводились   шаблоны   для   отдельного   символа или класса символов в строке. Показывались способы указать. произвольный символ, чтобы задать широкий спектр шаблонов  в регулярных  выражениях.  Есть также  специальные символы, позволяющие указать, сколько раз отдельный шаблон повторяется в строке.

 
Символ   (*)   указывает   на   то,   что   последовательность
встречается ноль или больше раз, а плюс (+) — как минимум один раз.


Два примера ниже с символами * и + очень похожи. Оба проверяют наличие буквенно-цифровых символов произвольной длины. Первое условие также соответствует пустой строке, потому что звездочка допускает ноль и больше совпадений [[:alnum:]]:


if (ereg("^[[:alnum:]]*$", $phrase)) ...
if (ereg("^[[:alnum:]]+$", $phrase)) ...


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

if (ereg("^([[:alpha:]][[:digit:]])+$", $Sstring)) ...


Символ плюс указывает на то, что последовательность буква/цифра должна встречаться не менее одного раза. Чтобы задать фиксированное количество повторений, нужно указать номер в фигурных скобках. Можно задать одно или два числа через запятую для указания диапазона, как показывается в примере ниже:

if (ereg("^([[:alpha:]][[:digit:]])+{2,3}$", $Sstring)) ...


Это выражение соответствует четырем или шести символам с чередующимися буквами и цифрами. Но единичная комбинация буквы и цифры или более трех повторений не соответствуют этой комбинации.
Знак вопроса (?) указывает на то, что комбинация должна встретиться не больше одного раза. Его поведение аналогично действию комбинации {0,1}.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити