Регулярное выражение для соответствия пути каталога - PullRequest
2 голосов
/ 02 марта 2020

Я нашел строку регулярного выражения, соответствующую строке пути к каталогу.

У меня возникли проблемы, при которых совпадали другие каталоги, которые были подстрокой поискового запроса. ie. строка поиска была "pool0 / backuptesttest" и соответствовала бы "pool0 / backuptesttest"

Я пришел с запросом регулярного выражения lookforward:

(pool0\/backuptest)(((?=\/)(\/\w*)))+|(pool0\/backuptest)$

UPDATE просто обнаружил, что это не будет работать на Linux bash CLI, так как он не поддерживает regex lookahead

Это будет соответствовать:

pool0/backuptest
pool0/backuptest/testchild1
pool0/backuptest/testchild3/testchild1_1
pool0/backuptest/testchild3/testchild1_1/testchild2_1

И отклонит:

pool0/backuptesttest

Есть ли более чистый способ сделать это?

regex101 screenshot

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вы можете использовать

^pool0/backuptest(?:/[^/]+)*$

Или, чтобы разрешить трейлинг /:

^pool0/backuptest(?:/[^/]+)*/?$

См. regex demo

Подробности

  • ^ - начало строки
  • pool0/backuptest - строка литерала
  • (?:/[^/]+)* - 0+ вхождений / и 1+ символов кроме /
  • /? - необязательный /
  • $ - конец строки.
0 голосов
/ 02 марта 2020

Как насчет этого, просто либо сопоставьте родительский каталог, либо любой подкаталог (утверждая, что за родителем должен следовать /):

pool0\/backuptest$|pool0\/backuptest\/.*

https://regex101.com/r/kJHw6y/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...