名詞解釋
正則表達(dá)式(regular expression, RE)是一種字符模式,用于在查找過程中匹配指定的字符。
在大多數(shù)程序里,正則表達(dá)式都被置于兩個正斜杠之間;例如/l[oO]ve/就是由正斜杠界定的正則表達(dá)式,它將匹配被查找的行中任何位置出現(xiàn)的相同模式。在正則表達(dá)式中,元字符是最重要的概念。
定義:元字符是這樣一類字符,它們表達(dá)的是不同于字面本身的含義
基本正則表達(dá)式元字符
| 表達(dá)式 | 含義 |
|---|---|
| ^ | 行首定位符 |
| $ | 行尾定位符 |
| . | 匹配單個字符 |
| * | 匹配前導(dǎo)符0到多次 |
| .* | 匹配任意多個字符 |
| [ ] | 匹配指定范圍內(nèi)的一個字符 |
| [ - ] | 匹配指定范圍內(nèi)的一個字符,連續(xù)的范圍 |
| [^] | 匹配不在指定范圍內(nèi)的字符 |
| \ | 用來轉(zhuǎn)義元字符,褪去特殊含義 |
| \< | 詞首定位符 |
| \> | 詞尾定位符 |
| ( ) | \(..\) 匹配稍后使用的字符的標(biāo)簽 |
| x\{m\} | 字符x重復(fù)出現(xiàn)m次 |
| x\{m,\} | 字符x重復(fù)出現(xiàn)m次以上 |
| x\{m,n\} | 字符x重復(fù)出現(xiàn)m次到n次 |
拓展正則表達(dá)元式字符
| 表達(dá)式 | 含義 |
|---|---|
| + | 匹配1~n個前導(dǎo)字符 |
| ? | 匹配0~1個前導(dǎo)字符 |
| a|b | 匹配a或b |
| ( ) | 組字符 |
示例 1:
// 查找匹配
#找到love開頭的行
[root@localhost ~]# egrep "^love" file
#找到love結(jié)尾的行
[root@localhost ~]# egrep "love$" file
#找到l開頭,一個任意字符,ve結(jié)尾
[root@localhost ~]# egrep "l.ve" file
#l開始,零個或多個o,ve結(jié)尾
[root@localhost ~]# egrep "lo*ve" file
#大L 或者小L 開頭的 ove
[root@localhost ~]# egrep "[Ll]ove" file
#love最后一個小寫字母
[root@localhost ~]# egrep "love[a-z]" file
#love最后一個(不是字母或者數(shù)字),而是符號
[root@localhost ~]# egrep "love[^a-zA-Z0-9]" file
示例 2:
// 查找匹配
#找到所有行
[root@localhost ~]# egrep ".*" file
#找到空行
[root@localhost ~]# egrep "^$" file
#開頭一個大寫,最后2個任意字符
[root@localhost ~]# egrep "^[A-Z]..$" file
#一個大寫開頭,0到多個小寫或空格,3,最后是0-5的一個數(shù)字
[root@localhost ~]# egrep "^[A-Z][a-z ]*3[0-5]" file
#0到多個小寫字母,最后一個點
[root@localhost ~]# egrep "[a-z]*\." file
#0到多個空格開頭,一個大寫,一個小寫,再一個小寫結(jié)尾
[root@localhost ~]# egrep "^ [A-Z][a-z]*[a-z$]" file
#0到多個字母開頭,非逗號,0到多個英文結(jié)尾
[root@localhost ~]# egrep "[A-Za-z]*[^,][A-Za-z]*" file
#找到 fourth 單詞
[root@localhost ~]# egrep "\<fourth\>" file
#找到f開頭th結(jié)尾的單詞
[root@localhost ~]# egrep "\<f.*th\>" file
#找到5兩次2三次和一個點
[root@localhost ~]# egrep "5{2}2{3}\." file
#找到0到多個 ,空格或tab的行
[root@localhost ~]# egrep "[ \t]*" file
#找到以#號開頭的行
[root@localhost ~]# egrep "^#" file
#找到有0到多個,空格或者tab開頭的行,的注釋行
[root@localhost ~]# egrep "^[ \t]*#" file
#過濾掉空行與\#注釋的行
[root@localhost ~]# egrep -v "^$|#" file