shell

【现学现忘&Shell编程】— 28.基础正则表达式练习(三)

2020-10-16  本文已影响0人  繁华似锦Fighting

(7)\{n\}练习

\{n\}表示其前面的字符恰好出现n次。

提示:\{n\}中的\表示转义符,下面同理。

如下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饥,虚心若愚。——乔布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs
abc adapt 适应 abc
12a adopt 采用 12345

abc adept 内行 XYZ
1b3 floor 地板 7788999
123 flour 面粉 123

执行命令:grep "[0-9]\{3\}" test2.txt


我们可以看到,有三个连续的数字,或者包含有三个连续数字的文本,都被匹配到了。
如果我们要是不用\{n\}的方式进行正则匹配的话,如下:
执行命令:grep "[0-9][0-9][0-9]" test2.txt

我们可以看到上边的命令就会麻烦很多,如果要是匹配10个连续的数字,那命令就非常的冗余了。
字母也是同理的。

注意:
\{n\}匹配的方式一般不会用于匹配字母,多用于匹配数字,如电话号码。
还要再重复一遍,正则表达式是包含匹配,多注意限位(制)符的使用。

(8)\{n,\}练习

\{n,\}表示其前面的字符出现不小于n次。

如下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饥,虚心若愚。——乔布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs

比如fo\{4,\}l这个正则就会匹配用f开头,l结尾,中间最少有4个o的字符串。

执行命令:grep "fo\{4,\}l" test2.txt

正则表达是fo\{4,\}looooo*的区别同上边(7)\{n\}同理。

练习:匹配至少连续5个字数的文本

abc adapt 适应 abc
12a adopt 采用 12345

abc adept 内行 XYZ
1b3 floor 地板 7788999
123 flour 面粉 123

执行命令:grep "[0-9]\{4,\}" test2.txt

(9)\{n,m\}练习

\{n,m\}匹配其前面的字符至少出现n次,最多出现m次。

下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饥,虚心若愚。——乔布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs
Stay hungry, stay foooooolish.  ——Steve Jobs

匹配在字母f和字母l之间有最少3个o,最多5个o。

执行命令:grep "fo\{3,5\}l" test2.txt

4、总结

我们学习Shell的正则表达式,实际的应用是什么?

提示:要注意区分正则表达式和通配符中的符号功能的不同。

上一篇 下一篇

猜你喜欢

热点阅读