Регулярно определяйте расширение .gz, а не расширение .tar.gz, указанное в файловом менеджере Worker. - PullRequest
1 голос
/ 21 февраля 2020

Мне нужно простое регулярное выражение для определения расширений файлов .gz, но НЕ расширений .tar.gz в файловом менеджере Worker.

.*\.gz$ идентифицирует .gz и .tar.gz, что не требуется .
.*[^\.]...\.gz$ рода работ. .*(?<!\.tar)\.gz терпит неудачу, так как механизм регулярных выражений Worker не настолько сложен и, похоже, не поддерживает обходные пути. Поддерживает? и +, и |, () и {} без необходимости экранирования.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

«Механизм регулярных выражений работника не такой уж сложный и, кажется, не поддерживает обходные пути» *

В этом случае, возможно, вам подойдет следующее:

^.*(?:[^r]|(?:[^a])r|(?:[^t])ar|(?:[^\.])tar)\.gz$

Что бы свести на нет любой обходной путь. Вдохновение от этого старого поста. Теперь это должно соответствовать любой строке, заканчивающейся .gz, за исключением строк, заканчивающихся .tar.gz.

Но в качестве @TimBiegeleisen упоминается . Поддержка Lookahead является более распространенной, и, если она доступна, очевидно, что путь к go =)

1 голос
/ 21 февраля 2020

Одним из вариантов будет использование отрицательного прогнозного утверждения в начале шаблона регулярного выражения, которое устраняет расширение .tar.gz:

^(?!.*\.tar\.gz$).*\.gz$

Демо

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