Как составить регулярное выражение, которое соответствует всем файлам в каталоге, кроме файлов с расширением.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.