使用grep正则时无法匹配\d语法

发布时间 2023-10-18 12:23:04作者: 505donkey

问题现象

现象描述

在使用grep的正则扩展功能,查找名称带数字的文件名时,发现查找结果一直不对(期望结果为能匹配到两个,但实际只能匹配1个)。
image

环境说明

操作问题:Centos 7.6
使用命令:find(版本4.5.11),grep(版本2.20)

排查处理

  1. 首先去验证下正则语法,测试发现正则表达式没问题。
    image

  2. 调试匹配语句,如加入-E参数等,均无效。
    image

  3. 搜索资料有人建议不要使用\d语法,换成具体数字范围,验证果然可用,问题解决。
    image

原因分析

正则表达式其实也有分类,主要有三类,分别是basic RegExs,extended RegExs和perl RegExs(具体可从man grep中获取)。
image
其中 basic RegExs 是默认的,即不加任何参数也可以使用的正则,但不同的正则的类型,在正则语法支持上会存在差异,像 \d 语法,对 basic RegExs,extended RegExs 就是不支持的,但 perl RegExs 没问题,示例如图
image