測試文件regex.txt如下
[root@192 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
[root@192 Zhengze]# grep --color -n "aa" regex.txt
2:aa
3:a aa
等同於如下
[root@192 Zhengze]# grep --color -n "a\{2\}" regex.txt
2:aa
3:a aa
但是多於2個也會被匹配到
[root@192 Zhengze]# grep --color -n "b\{2\}" regex.txt
4:bb
5:bbb
通過錨定精確匹配到2個b
[root@192 Zhengze]# grep --color -n "\<b\{2\}\>" regex.txt
4:bb
z\{x,y\} 表示z字符至少連續出現x次,最多連續出現y次
[root@192 Zhengze]# grep --color -n "d\{2,4\}" regex.txt
7:dddd d dd ddd
那么\{x,\}表示之前的字符至少連續出現x次,或者連續出現次數大於x次,即可被匹配到
\{,y\}表示之前的字符至多連續出現y次,或者連續出現次數小於y次,即可被匹配到,最小次數為0次,換句話說,之前的字符連續出現0次到y次,都會被匹配到。
[root@192 Zhengze]# grep --color -n "d\{2,\}" regex.txt
7:dddd d dd ddd
ab都小於2,cc小於等於2,所以被匹配到了
[root@192 Zhengze]# grep --color -n "abc\{,2\}" regex.txt
8:ab abc abcc
*表示之前的字符連續出現任意次數(包括0次)
[root@192 Zhengze]# grep --color -n "e*f" regex.txt
9:ef eef eeef
d連續出現了0次,其他也符合條件所以被輸出了
[root@192 Zhengze]# grep --color -n "d*" regex.txt
1:a a
2:aa
3:a aa
4:bb
5:bbb
6:c cc ccc
7:dddd d dd ddd
8:ab abc abcc
9:ef eef eeef
10:
通配符中,*表示匹配任意長度的任意字符
在正則表達式中,使用".*"表示任意長度的任意字符