先推荐慕课网上的Tony老师的《shell编程之正则表达式》,我是看完课程才来这里写一些笔记,加深印象。
在讲基础正则表达式之前,先了解一下通配符。
通配符:匹配符合条件的文件名,通配符是完全匹配,也就是要和条件完全吻合。由于匹配的是文件名,所以我们选择像ls,find,cp这些命令来使用通配符。
正则表达式:用来在文件中匹配符合条件的字符串,正则是包含匹配,意思是包含符合条件的字符即可。正则匹配的是文件内容,所以我们选择grep,awk,sed等命令。
通过以上介绍我们可以看出通配符和正则表达式的区别:1.通配符匹配的是文件名,正则匹配的是文件内容。2.通配符是完全匹配,正则是包含匹配。
基本正则表达式的元字符和作用
在使用正则表达式的时候,要时刻注意,正则表达式是包含匹配!!!
注意记忆"^"匹配行首写开头,"$"匹配行尾写最后
这里的^不是取反,^在[]中才是取反,在这里是行首匹配
这里的s和i其实就是定界符,匹配要求可能连续的字符串都能满足要求,比如匹配要求是两个连续的a,那么连续包含两个或两个以上a的字符串都将符合条件。如果匹配要求是s后面接两个a,那么就只有s加上两个或两个以上a的字符串符合条件。相当于缩小了条件范围。
注意这里匹配的是IP地址的格式,三个数字.三个数字.三个数字.三个数字,而IP地址是有自己的规定的,比如最大是255.255.255.255,要做到完全按照IP地址的规则来写正则表达式,听Tony老师将会非常难。还有就是上面用到了转义字符\