正则表达式(2):连续次数匹配

eroshn 2020-06-16

测试文件regex.txt如下

[ Zhengze]# cat -n regex.txt
a a
aa
a aa
bb
bbb
c cc ccc
dddd d dd ddd
ab abc abcc
ef eef eeef

搜索2个a

[ Zhengze]# grep --color -n "aa" regex.txt
2:aa
3:a aa

等同于如下

[ Zhengze]# grep --color -n "a\{2\}" regex.txt
2:aa
3:a aa

但是多于2个也会被匹配到

[ Zhengze]# grep --color -n "b\{2\}" regex.txt
4:bb
5:bbb

通过锚定精确匹配到2个b

[ Zhengze]# grep --color -n "\<b\{2\}\>" regex.txt
4:bb

z\{x,y\} 表示z字符至少连续出现x次,最多连续出现y次

[ Zhengze]# grep --color -n "d\{2,4\}" regex.txt
7:dddd d dd ddd

那么\{x,\}表示之前的字符至少连续出现x次,或者连续出现次数大于x次,即可被匹配到

\{,y\}表示之前的字符至多连续出现y次,或者连续出现次数小于y次,即可被匹配到,最小次数为0次,换句话说,之前的字符连续出现0次到y次,都会被匹配到。

正则表达式(2):连续次数匹配

相关推荐