Как составить регулярное выражение, которое соответствует всем файлам в каталоге, кроме файлов с расширением.jar?

Давайте предположим, что у нас есть следующая структура каталогов:

/parentdir/
   /childdir/
      child_file1.txt
      child_file2.jar  
   file1.txt
   file2.txt

Итак, мы получаем следующие полные имена файлов:

/parentdir/file1.txt
/parentdir/file2.txt
/parentdir/childdir/child_file1.txt
/parentdir/childdir/child_file2.jar

Какое регулярное выражение соответствует всем этим файлам, кроме последнего с расширением.jar?

Небольшое пояснение: выражение может содержать строку 'parentdir' и строку '.jar', все остальные файлы и каталоги могут иметь любые имена и расширения.

2 ответа

Вы можете использовать отрицательные утверждения: /(?<!\.jar)$/

Это будет соответствовать всему, что не заканчивается на.jar

Регулярное выражение отрицательного утверждения - один из способов, но более распространенное решение для этого на ртутной земле - это широкое игнорирование (например, просто игнорирование parentdir/) а потом hg add несколько файлов исключений, которые вы не хотели игнорировать.

В SVN и CVS вы не можете добавить файл, который находится в вашем списке игнорирования, и если вы делаете, будущие изменения не отслеживаются, но в Mercurial hg add полностью переопределенные игнорировать, поэтому, если в будущем у вас не появится много новых jar-файлов, просто проигнорируйте и добавьте.jar.

Другие вопросы по тегам