はこれを行うには、この正規表現を使用する必要があります
foo/bar/.+?\.(?!jar).+
説明
あなたは何を無視するように指示されているが、ので、この表現は、物事を探しているあなたドン'tが必要です。あなたは、名前(相対ディレクトリを含む)の任意のファイルを探し
- 含み(FOO /バー/)
- あなたは、その後の期間の前に任意の文字を探してください(。+?\。==試合一つ以上
- これは、 "jar"エンディング(?!jar)がないことを確認します(これはネガティブルックアヘッドと呼ばれます)
- 最後に、それをつかむ(+)
正規表現イオンは混乱しやすいので、私はあなたがそれらを構築するのを助けるためにRegex Buddyのようなツールを得ることを強くお勧めします。それは正規表現を本当に役立つ簡単な英語に分解します。
EDIT
ねえJason S、あなたはそれがそれらのファイルを欠場し、私をつかまえました。
この修正正規表現は、あなたがリストされているすべての例のために動作します:
のfoo /バー/ bazに
FOOを
- のfoo /バー/ baz.txt:
foo/bar/(?!.*\.jar$).+
それが見つかりました/ bar/jar
- foo/bar/baz.jar.txt
- foo/bar/ba z.jar。
- foo/bar/baz。
- foo/bar/baz.txt。
しかし
- のfoo /バー/バズを見つけることができません。「の.jar」とし、これ以上の文字が続くゼロ以上の文字があるならば、一致していない、「/ fooの/バー」これは、内のファイルを探し言う
新しい説明
をjarファイル($は行の終わりを意味します)、そうでない場合は、次の文字と一致します。
whee!ありがとう、今私は行くし、それを試してみましょう。 –
うーん、いい考えですが、拡張子がまったくないファイルとは一致しないため、これは正しく機能しません。しかし、私はそれが私が必要とするものに変形できると思う。 'foo/bar /'部分は簡単なので、その時点でそれを忘れてしまいましょう。もしそれが "baz.txt"、 "baz"、 "jar"、 "baz.jar.txt"、 "baz.jar。"、 "baz。"、 "baz.txt"のファイルと一致するように修正できれば、 "しかし、 "baz.jar"ではなく、私は受け入れます。 :-) –
こんにちはジェイソン、私はあなたが意味するものを参照してください。私はちょうど働いている正規表現で私の答えを更新しました。私はあなたが列挙したすべての文字列に対してそれをテストしました。 –