Чтобы сделать это, вы должны будете использовать это регулярное выражение:
foo/bar/.+?\.(?!jar).+
Пояснение
Вы говорите ему, что игнорировать, так это выражение ищет вещи, которые вы дон 't хотите.
- Глядит для любого файла, имя которого (в том числе относительного каталога) включает в себя (Foo/бар /)
- Вы тогда искать любые символы, которые предшествуют период (. +? \. == матча один или более символы любого времени, пока вы не достигнете символа периода)
- Затем вы убедитесь, что у него нет конца «jar» (?! jar) (Это называется негативным взглядом вперед
- Наконец, вы зацепите его имеет (. +)
Regular express ионы легко запутаться, поэтому я настоятельно рекомендую вам получить такой инструмент, как Regex Buddy, чтобы помочь вам их построить. Он будет разбивать регулярное выражение на простой английский, что действительно помогает.
EDIT
Эй Jason S, вы поймали меня, это не пропустите эти файлы.
Это исправлено регулярное выражение будет работать для каждого примера вы перечислили:
foo/bar/(?!.*\.jar$).+
Он находит:
- Foo/бар/baz.txt
- Foo/бар/БАЗ
- Foo/бар/балка
- foo/bar/baz.jar.txt
- foo/bar/ba z.jar.
- foo/bar/baz.
- foo/bar/baz.txt.
Но не находит
Новое объяснение
Это говорит искать файлы в «Foo/бар /», то не совпадают, если есть ноль или более символов с последующим «.jar», а затем не более символов ($ означает конец строки), тогда, если это не так, сопоставьте любые следующие символы.
whee! спасибо, теперь я пойду и попробую. –
Хм, хорошая идея, но она не будет работать, как указано, так как она не будет соответствовать файлам без какого-либо расширения вообще. Но я думаю, что смогу превратить его в то, что мне нужно. Часть 'foo/bar /' проста, поэтому давайте забудем об этом на данный момент. Если вы можете исправить это, это соответствует файлам «baz.txt», «baz», «jar», «baz.jar.txt», «baz.jar.», «Baz.» И «baz.txt». " но НЕ «baz.jar», тогда я соглашусь. :-) –
Эй, Джейсон, я понимаю, что вы имеете в виду. Я просто обновил свой ответ с рабочим регулярным выражением. Я проверил его против каждой строки, которую вы указали. –