问题现象
现象描述
在使用grep的正则扩展功能,查找名称带数字的文件名时,发现查找结果一直不对(期望结果为能匹配到两个,但实际只能匹配1个)。
环境说明
操作问题:Centos 7.6
使用命令:find(版本4.5.11),grep(版本2.20)
排查处理
-
首先去验证下正则语法,测试发现正则表达式没问题。
-
调试匹配语句,如加入-E参数等,均无效。
-
搜索资料有人建议不要使用\d语法,换成具体数字范围,验证果然可用,问题解决。
原因分析
正则表达式其实也有分类,主要有三类,分别是basic RegExs,extended RegExs和perl RegExs(具体可从man grep中获取)。
其中 basic RegExs 是默认的,即不加任何参数也可以使用的正则,但不同的正则的类型,在正则语法支持上会存在差异,像 \d
语法,对 basic RegExs,extended RegExs 就是不支持的,但 perl RegExs 没问题,示例如图