正則表達式(2):連續次數匹配


測試文件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:

通配符中,*表示匹配任意長度的任意字符

在正則表達式中,使用".*"表示任意長度的任意字符


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM