正則運算式
1.正則運算式分類
正則運算式:REGEXP,REGular EXPression,
正則運算式分為兩類:
- Basic REGEXP(基本正則運算式)
- Extended REGEXP(擴展正則運算式)
2.基本正則運算式
元字符
. //任意單個字符
[] //匹配指定單位外的任意單個字符
[^] //匹配指定范圍外的任意單個字符
匹配次數
* //匹配其前面的任意單個字符任意次
.* //任意長度的任意字符
\? //匹配其前面的任意單個字符1次或0次
\+ //匹配其前面的任意單個字符至少一次
\{m,n\} //匹配其前面的任意單個字符至少m次,至多n次
位置錨定
^ //錨定行首,此字符后面的任意單個字符必須出現在行首
$ //錨定行尾,此字符前面的任意單個字符必須出現在行尾
^$ //空白行
\<或\b //錨定詞首,其后面的任意單個字符必須作為單詞首部出現
\>或\b //鎖定詞尾,其前面的任意單個字符必須作為單詞尾部出現
分組
\(\)
例:\(ab\)*
//后向參考
\1 //參考第一個左括號以及與之相應的右括號所包括的所有內容
\2 //參考第二個左括號以及與之對應的右括號所包括的所有內容
示例:
//過濾任意單個字符
[root@localhost zxr]# ls
1 2 3 4 5 6 7 8 9
[root@localhost zxr]# ls |grep '^.$'
1
2
3
4
5
6
7
8
9
//匹配指定范圍內的任意單個字符
[root@localhost zxr]# ls |grep '^[15]$'
1
5
[root@localhost zxr]# ls |grep '^[1-3]$'
1
2
3
//匹配指定范圍外的任意單個字符
[root@localhost zxr]# ls |grep '^[^123]$'
4
5
6
7
8
9
//匹配其前面的任意單個字符任意次
[root@localhost zxr]# ls |grep '^abc*$'
abc
abccc
abccccccc
//匹配任意長度的任意字符
[root@localhost zxr]# ls |grep '^a.*bc$'
abbc
abc
[root@localhost zxr]# ls |grep '^ab.*c$'
abbbbbbbbbcccccccc
abbbbbcccccc
abbc
abbcc
abc
abccc
abccccccc
[root@localhost zxr]# ls |grep '^abc.*$'
abc
abccc
abccccccc
//匹配其前面的任意單個字符1次或者0次
[root@localhost zxr]# ls | grep '^a\?b$'
ab
b
//匹配其前面的任意單個字符至少m次,至多n次
[root@localhost zxr]# ls |grep '^a\+bc$'
aaaabc
abc
//匹配其前面的任意單個字符至少m次,至多n次
[root@localhost zxr]# ls |grep '^a\{1,6\}bc$'
aaaabc
abc
//以a開頭
[root@localhost zxr]# ls |grep '^a'
aaaabc
aabbbbbccccc
aabbcc
abbc
abbcc
abc
abccc
//以c結尾
[root@localhost zxr]# ls |grep 'c$'
aaaabbbccc
aaaabc
abc
abccc
abccccccc
//錨定詞首
[root@localhost zxr]# cat a
awswswsw
qweasd
admin
alog
loga
[root@localhost zxr]# grep '\<a' a
awswswsw
admin
alog
//錨定詞尾
[root@localhost zxr]# grep 'a\>' a
loga
//錨定詞首,和詞尾
[root@localhost zxr]# grep '\<admin\>' a
admin
3.擴展正則運算式
字符匹配
. //匹配任意單個字符
[] //匹配指定范圍內的任意單個字符
[^] //匹配指定范圍外的任意單個字符
單個字符匹配相關
[[:alpha:]] 表示任意大小寫字母,
[[:lower:]] 表示任意小寫字母,
[[:upper:]] 表示任意大寫字母,
[[:digit:]] 表示0到9之間的任意單個數字(包括0和9),
[[:alnum:]] 表示任意數字或字母,
[[:space:]] 表示任意空白字符,包括"空格"、"tab鍵"等,
[[:punct:]] 表示任意標點符號,
[^[:alpha:]] 表示單個非字母字符,
[^[:lower:]] 表示單個非小寫字母字符,
[^[:upper:]] 表示單個非大寫字母字符,
[^[:digit:]] 表示單個非數字字符,
[^[:alnum:]] 表示單個非數字非字母字符,
[^[:space:]] 表示單個非空白字符,
[^[:punct:]] 表示單個非標點符號字符,
[0-9]與[[:digit:]]等效,
[a-z]與[[:lower:]]等效,
[A-Z]與[[:upper:]]等效,
[a-zA-Z]與[[:alpha:]]等效,
[a-zA-Z0-9]與[[:alnum:]]等效,
[^0-9]與[^[:digit:]]等效,
[^a-z]與[^[:lower:]]等效,
[^A-Z]與[^[:upper:]]等效
[^a-zA-Z]與[^[:alpha:]]等效
[^a-zA-Z0-9]與[^[:alnum:]]等效
次數匹配
* //匹配其前面的任意單個字符任意次
? //匹配其前面的任意單個字符1次或0次
+ //匹配其前面的任意單個字符至少1次
{m,n} //匹配其前面的任意單個字符至少m次,至多n次
位置錨定
^ //錨定行首,此字符后面的任意單個字符必須出現在行首
$ //錨定行尾,此字符前面的任意單個字符必須出現在行尾
^$ //空白行
\<或\b //錨定詞首,其后面的任意單個字符必須作為單詞首部出現
\>或\b //錨定詞尾,其前面的任意單個字符必須作為單詞尾部出現
分組
() //分組
\1,\2,\3,....
例:(ab)*
//后向參考
\1 //參考第一個左括號以及與之對應的右括號所包括的所有內容
\2 //參考第二個左括號以及與之對應的右括號所包括的所有內容
//或者
| //or 默認匹配|的整個左側或者整個右側的內容
//例:C|cat表示C或者cat,要想表示Cat或者cat則需要使用分組,如(C|c)at
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/508035.html
標籤:Linux
