Документация для версии POS-Интеллект 5.3. Документация на другие версии также доступна.

Предыдущая страница Общие сведения о регулярных выражениях  Символьные классы Следующая страница

Допустим, имеются две строки:

abcd12345efg
fghi56789qwe

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

Выше рассказывалось, как описать символ, который будет совпадать с любой латинской буквой (для этого используется символьный класс: [a-z] (пока не обращаем внимания на то, что есть еще заглавные буквы)), а также символ условия, который совпадет с любой цифрой: [0-9]

Требуется найти строки с четырьмя буквами вначале, сразу после которых идут пять цифр.

Можно написать: [a-z][a-z][a-z][a-z][0-9][0-9][0-9][0-9][0-9]

Такая форма записи условия поиска будет работать. Так как мы описали каждым символьным классом один символ в условии поиска. Конструкция кажется слишком громоздкой. В данной ситуации следует использовать квантификаторы. Квантификатор выражает количество символов в условии поиска. Условие поиска упрощается при помощи квантификаторов: [a-z]{4}[0-9]{5}

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

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

Подобное задание количества символов в условии поиска не является единственным. Квантификаторы бывают разные: [a-z]{1,3} означает, что подряд может идти от одного до трех букв латинского алфавита. [a-z]{2,} означает, что может идти минимум 2 буквы латинского алфавита подряд.

Но квантификатор в фигурных скобках не является единственным способом задать количество символов идущих подряд, которые описаны символьным классом. [a-z]* означает, что подряд может идти сколь угодно букв латинского алфавита, а может быть, что и ни одной, идентично [a-z]{0,}. [a-z]+ означает, что обязательно подряд должна идти минимум одна буква латинского алфавита, но максимальное количество не указано, идентично [a-z]{1,} [a-z]? означает, что количество латинских букв не должно превышать 1, буква также может вообще отсутствовать, идентично [a-z]{0,1}.

Условие поиска совпадения, которое описывается одним неспециальным символом, называется литералом.

К литералам можно применять любой из вышеприведенных квантификаторов.

Ясно, что если применить условие поиска abcd{1,4}efg для строки abcefg, совпадение найдено не будет, так как квантификатор {1,4} подразумевает, что после abc перед efg идет минимум одна, максимум четыре буквы d. 

  • No labels