Shell中的正则脚本
在之前的文章《使用Husky管理项目的Git Hooks(以配置Uni-app的ESLint和Commit Lint为例)》中介绍了使用Husky添加Commit Lint的方法,其实里面有点小插曲。
我想要格式
feature/(big|small|middle): xxxxxx
比如:
清明出行礼包/big: 初始化项目
通常的正则
^\w+\/(big|small|middle):\s*\S+
但我这个在Shell中写了之后发现,shell中根本不支持\w
这样的元字符(我也没找到原因)
Shell的写法
在参考了《Linux命令行与Shell脚本编程大全》中的内容后,修改如下:
^[[:graph:]]+\/(big|small|middle):[[:space:]]*[[:graph:]]+
原因
在Linux中有2种流行的正则表达式引擎:
- POSIX基础正则表达式 – BRE
- POSIX扩展正则表达式 – ERE
大多数Linux工具至少符合BRE规范,那在POSIX引擎中匹配单词之类的就不能用\w
这种,要用POSIX专用的。常见的有:
小结
就是一个引擎问题,纠结了2天,结果周末在一本买了很久但没看的书里找到了,果然书中自有颜如玉,啊呸,黄金屋。