正则表达式排除不适用于 inotifywait 的非 golang 文件
regex to exclude non golang files not working with inotifywait
以下是用于过滤掉所有非 go 文件(即扩展名为“.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')
虽然它们似乎可以在 go 中正常工作,但不能与 inotifywait
的排除过滤器(使用 posix ERE 格式)一起使用
我正在尝试在我的 Makefile 中为一个 golang 项目设置一个 "watch and reload" 任务。另外我假设文件或文件夹名称没有空格。
知道问题了。似乎 [:graph:]
不是 \S
扩展 posix 中非 space 字符的 class 标识符。下面是好的。
^[[:graph:]]*[^.][^g][^o]$|^[[:graph:]]{1,2}$|^[[:graph:]]*.[^g].$|^[[:graph:]]*..[^o]$|^[[:graph:]]*[^.]..$
甚至更好的来自 stribizhev 评论 [^.][^g][^o]$|^..$|.[^g].$|..[^o]$|[^.]..$
您可以使用
\.[^.][^.][^.]+$|\.[^.][^o]$|\.[^g][^.]$|\.[^.]$
见demo
或者如果你可以分组:
\.([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])$
见demo
查看说明:
\.
- 文字点
([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])
- 一组备选方案:
[^.][^.][^.]+
- .
以外的 2 个字符和 .
... 以外的 1 个或多个字符
[^.][^o]
- 点以外的字符和 o
... 以外的字符
[^g][^.]
- g
以外的字符和点以外的字符...
[^.]
- 点以外的字符...
$
- 就在字符串结尾之前。
以下是用于过滤掉所有非 go 文件(即扩展名为“.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')
虽然它们似乎可以在 go 中正常工作,但不能与 inotifywait
的排除过滤器(使用 posix ERE 格式)一起使用
我正在尝试在我的 Makefile 中为一个 golang 项目设置一个 "watch and reload" 任务。另外我假设文件或文件夹名称没有空格。
知道问题了。似乎 [:graph:]
不是 \S
扩展 posix 中非 space 字符的 class 标识符。下面是好的。
^[[:graph:]]*[^.][^g][^o]$|^[[:graph:]]{1,2}$|^[[:graph:]]*.[^g].$|^[[:graph:]]*..[^o]$|^[[:graph:]]*[^.]..$
甚至更好的来自 stribizhev 评论 [^.][^g][^o]$|^..$|.[^g].$|..[^o]$|[^.]..$
您可以使用
\.[^.][^.][^.]+$|\.[^.][^o]$|\.[^g][^.]$|\.[^.]$
见demo
或者如果你可以分组:
\.([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])$
见demo
查看说明:
\.
- 文字点([^.][^.][^.]+|[^.][^o]|[^g][^.]|[^.])
- 一组备选方案:[^.][^.][^.]+
-.
以外的 2 个字符和.
... 以外的 1 个或多个字符
[^.][^o]
- 点以外的字符和o
... 以外的字符
[^g][^.]
-g
以外的字符和点以外的字符...[^.]
- 点以外的字符...
$
- 就在字符串结尾之前。