正则匹配,有很高挑战性的思维项目。 最近用得蛮多,有一些自己运用正则匹配的思索,记录下来,供以后重温。 下面是要用到的截图,如下:
开始第一个问题:
1.匹配带有后缀名的。
这个简单,带有后缀名,其实就是文件名有一个".",匹配这个点就可以。命令:
ls |grep "\."
测试OK。
2.匹配没有后缀名的。和上面对立,不匹配"."。简单点命令:
ls |grep -v “\."
测试OK。
3.匹配后缀名是两个字符的。正则写"\.[a-z0-9]\{2\}",命令:
ls |grep "\.[a-z0-9]\{2\}"
测试结果如图:
很明显,不仅后缀名两个字符的出现了,三个四个字符的也出现了。
反思为什么都出现了呢?
对比下写的正则:[a-z0-9]\{2\}。
这条正则的意义是:匹配字符或者数字两个。想想,后缀名3个或者4个的它都符合
匹配字符或者数字两个的正则。那如何只精确匹配两个字符呢?
引入:$。说明:$在正则里是指结尾。
命令改下如下:
ls |grep "\.[a-z0-9]\{2\}$"
测试OK.
4.匹配前缀名3个字符的,后缀名3个字符的。命令如下:
ls |grep "^[a-z0-9]\{3\}\.[a-z0-9]\{3\}$"
注意 ^ 和 $。
总结:匹配精确个数的情况下,可以引入^和$符号都精确定位。