我試圖匹配除以.bmp結尾的所有文件。所有以不使用否定式結尾的文件
由於一些限制,我不能使用否定(?:,!:)和引用(\ 1,...)。
我做了一個表達式,它適用於大多數的字符串:
^\w+\.([^b].*|b|b[^m].*|bm|bm[^p].*|bmp.+)$
它匹配不.BMP結束一切 - 包括test.txt的,test.bmp.txt等但非常規的,它確實允許test.bi.bmp。
關於如何改進正則表達式的任何想法,所以它只會匹配文件而不是以.bmp結尾?
我試圖匹配除以.bmp結尾的所有文件。所有以不使用否定式結尾的文件
由於一些限制,我不能使用否定(?:,!:)和引用(\ 1,...)。
我做了一個表達式,它適用於大多數的字符串:
^\w+\.([^b].*|b|b[^m].*|bm|bm[^p].*|bmp.+)$
它匹配不.BMP結束一切 - 包括test.txt的,test.bmp.txt等但非常規的,它確實允許test.bi.bmp。
關於如何改進正則表達式的任何想法,所以它只會匹配文件而不是以.bmp結尾?
不太優雅,但工作原理:
^.*([^b][^m][^p]|b[^m][^p]|[^b]m[^p]|[^b][^m]p|bm[^p]|[^b]mp)$
你也假定擴展名總是3個字母長 –
我沒有,我只是假設.bmp是3個字母長,超過3個字符的擴展名也會匹配 – Dmitry
@Dmitry:例如test.notabmp?這應該與你的正則表達式匹配,但我認爲它不是。 –
出於好奇,那些是什麼限制? –
還有其他應用程序在目標機器上使用正則表達式引擎,並且由於某些原因(我並不完全知道,但我猜它可能與性能,與某些事物的兼容性或速度有關),專門編譯了正則表達式引擎沒有它... :-( – Avenger