5

.bmpで終わるファイルを除くすべてのファイルを一致させようとしています。

いくつかの制約のため、否定(?:、!:)と参照(\ 1、...)を使用できません。

式を作成しましたが、ほとんどの文字列で機能します。

^\w+\.([^b].*|b|b[^m].*|bm|bm[^p].*|bmp.+)$

test.txt、test.bmp.txtなど、.bmpで終わらないすべてのものに一致します。しかし、残念ながら、test.bi.bmpは許可されます。

.bmpで終わらないファイルと一致するように正規表現を改善する方法について何かアイデアはありますか?

4

3 に答える 3

5

なぜだめですか:

^.*[^p]$|^.*[^m]p$|^.*[^b]mp$|^.*[^.]bmp$

http://regexr.com?31vg7

の方法は^.*([^p]|[^m]p|[^b]mp|[^.]bmp)$(短い)です。

于 2012-08-28T11:42:25.600 に答える
1
/^.+\.([^b][^.]*|b|b[^m][^.]*|bm|bm[^p][^.]*|bmp[^.]+)$/

'bmp'の前のドットが最後のドットであることを確認してください

于 2012-08-28T11:44:37.830 に答える
0

あまりエレガントではありませんが、機能します:

^.*([^b][^m][^p]|b[^m][^p]|[^b]m[^p]|[^b][^m]p|bm[^p]|[^b]mp)$
于 2012-08-28T11:39:34.350 に答える