Регулярное выражение не соответствующие ничему
Имеется корпоративное файловое хранилище примерно такой структуры: Группа/Проект/Состояние/Файл
Есть внутренняя утилиту для поиска и обработки файлов с возможностью указывать условие поиска.
Глубина вложенности не постоянная, например у некоторых групп есть подгруппы, у некоторых проектов есть подпроекты, а у некоторых проектов с небольшим количеством файлов нет подкаталогов Состояние, оно отражено в имени файла. Структуру менять нельзя.
В 99% случае условие поиска имеет следующий вид: Все файлы из групп Группа1 и Группа2, кроме состояний Состояние1 и Состояние2
Поэтому в утилите отсев сделан в виде двух регулярок:
- Пропускать файлы, не соответствующие первой - отсев по группе/подгруппе/проекту
- Пропускать файлы, соответствующие второй - отсев по состоянию
Появилась необходимость для некоторых проектов обрабатывать все состояния, то есть вторая регулярка не должна срабатывать.
Если регулярку не заполнять, программа не начинает обработку.
Собственно вопрос: Какому перл-совместимому (PCRE) регулярному выражению не будет соответствовать ни одно имя файл?
PS файловое хранилище на linux, поэтому в имен файла могут быть любые символы
Ответы (1 шт):
Регулярные выражения, которые никогда не найдут совпадения ни в одной строке:
x^- Букваx, за которой следует начало строки (универсальный шаблон)$x- Конец строки, после которого должна идти букваx(универсальный шаблон)x\ba- Букваx, за которой должна быть граница слова и букваa(требуется поддержка границ слова, в PostgreSQL это\y)\b\B/\B\b- Позиция, которая должна быть одновременно и границей слова и противположной позицией (требуется поддержка границ слова, в PostgreSQL, Tcl, TRE это\mи\M)x++x- После одной и болееxдолжна быть ещё одна букваx(без бэктрекинга) (требуется поддержка сверхжадных кванитификаторов)(?>x+)x- То же, что иx++x(?!)- Сразу после текущей позиции не должно быть ничего (требуется поддержка блоков предварительного просмотра)(?=a)x- Сразу после текущей позиции должна бытьaИx(требуется поддержка блоков предварительного просмотра)(?!a)a- Сразу после текущей позиции не должно бытьa, но должна бытьa(требуется поддержка блоков предварительного просмотра)(*FAIL)- То же, что и(?!)(только PCRE)(*F)- То же, что и(*FAIL).