以下是过滤掉所有非go文件的正则表达式(即扩展名为'。'的文件)
^([\S]*[^.][^g][^o]|[\S]*.[^g].|[\S]*..[^o]$|[\S]*[^.]..|[\S]{1,2})$
^([^.]*)($|[.]($|[\S]$|g[^o]$|[^g]o$|[^g][^o]$|([\S]+)\.($|.$|g[^o]$|[^g]o$|[^g][^o]$|[^.]{3,}$)|[^.]{3,}$))
你可以在这里测试它们(点击在正则表达式下面的菜单中试试'Go')
虽然它们似乎可以正常使用但不能使用inotifywait
的排除过滤器(使用posix ERE格式)
我正在尝试在我的Makefile中为golang项目设置“监视并重新加载”任务。另外我假设文件或文件夹名称没有空格。
答案 0 :(得分:1)
遇到了问题。似乎[:graph:]
不是\S
扩展posix中非空格字符的类标识符。以下是好的。
^[[:graph:]]*[^.][^g][^o]$|^[[:graph:]]{1,2}$|^[[:graph:]]*.[^g].$|^[[:graph:]]*..[^o]$|^[[:graph:]]*[^.]..$
甚至更好的来自stribizhev评论[^.][^g][^o]$|^..$|.[^g].$|..[^o]$|[^.]..$
答案 1 :(得分:1)
您可以使用
\.[^.][^.][^.]+$|\.[^.][^o]$|\.[^g][^.]$|\.[^.]$
请参阅demo
或者如果你可以分组:
\.([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])$
请参阅demo
见解释:
\.
- 一个文字点([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])
- 一组替代方案:
[^.][^.][^.]+
- .
以外的2个字符以及.
以外的1个或多个字符... [^.][^o]
- 除o
以外的字符和字符以外的字符... [^g][^.]
- g
以外的字符和点以外的字符... [^.]
- 一个点以外的角色...... $
- 就在字符串结尾之前。