先看两个指令输出结果,openwrt下存在rules.mk,
ls | grep "rule.*.mk" 可以匹配到rules.mk输出,但是ls | grep "rule*.mk"却没有输出,问题原因是什么?
问题原因:
正则表达式"rule*.mk" ,中*号表示匹配rul.mk rule.mk rulee.mk ruleee.mk ruleeee.mk等,表示e匹配0个或者多个,所以不会匹配到rules.mk
正则表达式"rule.*.mk",中.*号表示匹配rule和.mk之间的任意字符,所以才可以正确匹配到rules.mk,.*表示匹配前后字符之间的任意字符
备注:
特殊字符:
字符类
注意:任意字符“.”与重复字符“*”
1).(小数点):代表一定有一个任意字符的意思。
2)*(星号):代表匹配0-无穷个任意字符的意思,为组合形态。
释:“g*”代表的是具有空字符或一个g以上的字符。
数量限定符
参考链接: