Pour ce faire, vous aurez besoin d'utiliser cette expression régulière:
foo/bar/.+?\.(?!jar).+
Explication
Vous dites que ce que l'ignorer, si cette expression est à la recherche des choses que vous don 't veulent.
- Vous recherchez un fichier dont le nom (y compris le répertoire relatif) comprend (foo/bar /)
- Vous regardez alors pour tous les caractères qui précèdent une période (. +? \. == apparier un ou plusieurs caractères de n'importe quel temps jusqu'à ce que vous atteigniez le caractère de période)
- Vous vous assurez alors qu'il n'a pas la fin "jar" (?! jar) (Ceci est appelé un regard négatif à venir
- Enfin, vous prenez la fin it a (. +)
les ions sont faciles à gâcher, donc je suggère fortement que vous obteniez un outil comme Regex Buddy pour vous aider à les construire. Il va décomposer une regex en anglais, ce qui aide vraiment.
EDIT
Hey Jason S, tu me pris, il ne manque ces fichiers.
Cette regex corrigée fonctionnera pour tous les exemples que vous avez énumérés:
foo/bar/(?!.*\.jar$).+
Il trouve:
- foo/bar/baz.txt
- foo/bar/baz
- foo/bar/pot
- foo/bar/baz.jar.txt
- foo/bar/ba z.jar.
- foo/bar/baz.
- foo/bar/baz.txt.
Mais ne trouve pas
Nouvelle Explication
Cela dit rechercher les fichiers dans « foo/bar/», puis ne correspondent pas s'il y a zéro ou plusieurs caractères suivis par « .jar », puis a plus de caractères ($ signifie la fin de la ligne), puis, si ce n'est pas le cas, faites correspondre les caractères suivants.
whee! merci, maintenant je vais essayer. –
hmm, bonne idée, mais cela ne fonctionnera pas comme indiqué, car il ne correspondra pas du tout aux fichiers sans aucune extension. Mais je pense que je peux le transformer en ce dont j'ai besoin. La partie 'foo/bar /' est facile alors oublions ça pour le moment. Si vous pouvez le réparer, il doit correspondre aux fichiers "baz.txt", "baz", "jar", "baz.jar.txt", "baz.jar", "baz" et "baz.txt". " mais pas "baz.jar" alors je vais accepter. :-) –
Salut Jason, je vois ce que tu veux dire. Je viens de mettre à jour ma réponse avec une regex fonctionnelle. Je l'ai testé contre chaque chaîne que vous avez listée. –