Um dies zu tun, werden Sie diesen regulären Ausdruck verwenden müssen:
foo/bar/.+?\.(?!jar).+
Erklärung
Sie sagen es, was zu ignorieren, so dass dieser Ausdruck für Dinge suchen Sie don 't wollen.
- Sie suchen für jede Datei, dessen Namen (einschließlich relativem Verzeichnis) enthält (foo/bar /)
- Sie dann für beliebige Zeichen suchen, die eine Periode vorausgehen (. +? \. == Spiel einer oder mehr Zeichen von jeder Zeit, bis Sie die Periode Zeichen erreichen)
- Sie stellen Sie dann sicher, dass es nicht die "Jar" endet (?! JAR) (Dies nennt man eine negative Vorschau
- Endlich greifen Sie das Ende es hat (. +)
Regelmäßige Express Ionen sind leicht zu vermasseln, also empfehle ich dringend, dass Sie ein Werkzeug wie Regex Buddy bekommen, um Ihnen zu helfen, sie zu bauen. Es wird eine Regex in einfaches Englisch zerlegen, was wirklich hilft.
EDIT
Hey Jason S, Sie haben mich erwischt, hat es diese Dateien verpassen.
Diese korrigierte regex wird für jedes Beispiel arbeiten Sie aufgelistet:
foo/bar/(?!.*\.jar$).+
Es findet:
- foo/bar/baz.txt
- foo/bar/baz
- foo/bar/jar
- foo/bar/baz.jar.txt
- foo/bar/ba z.jar.
- foo/bar/baz.
- foo/bar/baz.txt.
Aber nicht findet
Neue Erklärung
Diese Dateien suchen, sagt in „foo/bar /“, dann stimmen nicht überein, wenn es null oder mehr Zeichen von „.jar“ gefolgt und dann mehr Zeichen ohne ($ bedeutet Ende der Zeile), wenn das nicht der Fall ist, passen Sie die folgenden Zeichen an.
whee! Danke, jetzt werde ich gehen und es versuchen. –
hmm, gute Idee, aber es wird nicht wie gesagt funktionieren, da es keine Dateien ohne jegliche Erweiterung passt. Aber ich denke, ich kann es zu dem machen, was ich brauche. Der 'foo/bar /' Teil ist einfach, also vergessen wir das im Moment. Wenn Sie es reparieren können, so stimmt es mit den Dateien "baz.txt", "baz", "jar", "baz.jar.txt", "baz.jar", "baz." Und "baz.txt" überein. " aber nicht "baz.jar" dann werde ich akzeptieren. :-) –
Hey Jason, ich verstehe was du meinst. Ich habe gerade meine Antwort mit einem funktionierenden Regex aktualisiert. Ich habe es gegen jede aufgelistete Saite getestet. –