Существуют различные способы формально описать правила формирования последовательности идущих подряд символов для их выделения среди других последовательностей символов, например для поиска имен файлов в каталоге. Одним из способов являются регулярные выражения.
Для задания регулярных выражений приняты следующие обозначения:
с Любой неспециальный символ с соответствует самому себе. Специальными символами будем считать только символы [, ], {, }, *, +, -, ? – эти символы не могут по условию данной задачи встретится в тексте.
[...] Любой символ из ...; допустимы диапазоны типа а-z (последовательно идущие символы в алфавите); возможно объединение диапазонов, например [a-z0-9] и сочетание диапазонов и отдельных символов [a-z0-9~#].
r* Ноль или более вхождений символа r, может применяться и для диапазонов, например [a-z#]* означает ноль или более вхождений любых символов из диапазона от a до z или символа # в любом порядке.
r+ Одно или более вхождений символа r, может применяться и для диапазонов, например [a-z>]+ означает одно или более вхождений любых символов из диапазона от a до z или символа > в любом порядке.
r? Ноль или одно вхождение символа r, может применяться и для диапазонов, например [a-z@]? означает ноль или одно вхождение любого символа из диапазона от a до z или символа @.
r1r2 За символом или диапазоном r1 следует символ или диапазон r2. { } Число вхождений предыдущего выражения. Например, выражение [0-9]{5} соответствует подстроке из пяти десятичных цифр.
Пример: регулярное выражение a+[a-z]{5}.[0-9]* позволяет найти все последовательности символов, которые начинаются с одного или нескольких символов a, после которых идут ровно 5 маленьких латинских букв, затем точка и затем может следовать любое количество (в том числе ноль) арабских цифр.
У Васи на компьютере создана директория “Olymp”, содержимое которой приведено ниже:
programm7.rar
test_program_.hpp
program_1.rar
prog_new2.pas2
_prog12_.h
program.c
readme_prog1.txt
program.cpp prog.7z
1_prog.zip
Для поиска файлов Вася использует утилиту, позволяющую вывести список файлов, удовлетворяющих заданному регулярному выражению. Вася придумал регулярное выражение и получил непустой список соответствующих ему файлов. Петя внимательно посмотрел на получившийся список и ввел другое регулярное выражение, после применения которого получил такой же список файлов.
Выберите пары регулярных выражений, после применения которых на файлах из заданной директории будут получены одинаковые непустые списки файлов. В ответе укажите через запятую варианты ответов в порядке возрастания числа выведенных файлов, например, «4,2,1». В случае нескольких возможных вариантов выведите любой из них.
Примечание: поисковая утилита, которую использует Вася, выводит только имена файлов, которые целиком соответствуют регулярному выражению.