我正在尝试匹配所有未在jpg
/ png
/ jpeg
/ gif
中结束且尚未启动文件名的文件使用.
。
我正在将此正则表达式传递给find
,如此:
find -E path/to/dir myregex
这是正则表达式
^.*\/[^\.].*\.(?!jpeg$)(?!jpg$)(?!gif$)(?!png$)([^jgp]..|j[^p].|g[^i].|p[^n].|jp[^g]|gi[^f]|pn[^g]|jpg.+|png.+|gif.+|jpe[^g]|jpeg.+)[^\.]*$
它似乎确实有效,但是人类很长......一种可能性就是编写一个函数来生成它...但我希望有一种更简单的方法。
我不认为我使用的find
版本(OS X Mavericks)支持lookbehind,但即使它确实如此,我也想知道是否有替代方案。
答案 0 :(得分:1)
对不起这里的自我问答。在发布我的问题之前,我花了一些时间思考这个问题,但在发布后我才有了一些见解。
这有点长,但它不像问题那样强硬。
(?:^.{1,3}$)|(?:^(?!\.(?:jpg|gif|png)$).{4}$)|(?:^.*(?!.*\.(?:jpg|gif|png|jpeg)$).{5}$)