所有以后缀结尾的文件,不使用否定

时间:2012-08-28 11:29:17

标签: regex regex-negation

我正在尝试匹配除以.bmp结尾的所有文件。

由于一些限制,我不能使用否定(?:,!:)和引用(\ 1,...)。

我做了一个表达式,它适用于大多数字符串:

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

它匹配所有不以.bmp结尾的内容 - 包括test.txt,test.bmp.txt等。 但不言而喻,它确实允许test.bi.bmp。

有关如何改进正则表达式的任何想法,以便它只匹配以.bmp结尾的文件

3 个答案:

答案 0 :(得分:5)

为什么不:

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

http://regexr.com?31vg7

alternative^.*([^p]|[^m]p|[^b]mp|[^.]bmp)$(更短)。

答案 1 :(得分:1)

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

确保'bmp'之前的点是最后一个点

答案 2 :(得分:0)

不太优雅但有效:

^.*([^b][^m][^p]|b[^m][^p]|[^b]m[^p]|[^b][^m]p|bm[^p]|[^b]mp)$