正则表达式-连续次数匹配

\{n\} :表示前面的字符连续出现n次,将会被匹配到。不过需要注意,如果字符连续出现的次数大于指定的次数,也是可以被匹配到的
示例如下:
[root@iZbp19obnr01zl0jrho17wZ data]# cat reget.txt 
a a
aa
a aa
bb
bbb
c cc ccc
dddd d dd ddd
ab abc abcc
ef eef eeef
[root@iZbp19obnr01zl0jrho17wZ data]# grep "a\{2\}" reget.txt 
aa
a aa
[root@iZbp19obnr01zl0jrho17wZ data]# grep "b\{2\}" reget.txt 
bb
bbb
如果你不想出现上述情况,只是想要精准的匹配连续出现2次且只出现了2次的字母b,应该怎么办呢?就是结合单词定界符,锚定词首与锚定词尾
示例如下
[root@iZbp19obnr01zl0jrho17wZ data]# grep "\bb\{2\}\b" reget.txt 
bb

延申一下

\{x,y\} :表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到
示例如下
[root@iZbp19obnr01zl0jrho17wZ data]# grep "d\{2,4\}" reget.txt 
dddd d dd ddd
\{x,\} :表示之前的字符至少连续出现x次,或者连续出现次数大于x次,即可被匹配到,上不封顶。
\{,y\} :表示之前的字符至多连续出现y次,或者连续出现次数小于y次,即可被匹配到,最小次数为0次,换句话说,之前的字符连续出现0次到y次,都会被匹配到。
* :在通配符中,*表示匹配任意长度的任意字符。但是,在正则表达式中,*代表另一个意思,在正则表达式中,*表示之前的字符连续出现任意次数(包括0次),不要与通配符中的*搞混淆了。
示例如下
[root@iZbp19obnr01zl0jrho17wZ data]# grep "e*f" reget.txt 
ef eef eeef

. :”.”表示匹配任意单个字符
示例如下
[root@iZbp19obnr01zl0jrho17wZ data]# grep "a." reget.txt 
a a
aa
a aa
ab abc abcc
[root@iZbp19obnr01zl0jrho17wZ data]# grep "b.." reget.txt 
bbb
ab abc abcc
.* :”.*”可以理解为”.”与”*”的结合,”.*”在正则中表示”连续出现任意次的任意单个字符”,换句话说就是,任意长度的任意字符,正则表达式中的”.*”与通配符中的”*”所表达的意思一样。
\? :表示匹配其前面的字符0或1次,换句话说,就是前面的字符要么没有,要么有一个。

\+ :表示匹配其前面的字符至少1次,换句话说,就是前面的字符必须有至少一个。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值