***基本正則表達式(可支持grep,sed,awk等shell工具)
* 0個或多個在*字符前面的那個普通字符
. 匹配任意字符
^ 匹配行首,或後面字符是非
$ 匹配行尾
[]匹配字符集合
\ 轉義符,屏蔽一個元字符的特殊意義
\<\> 精確匹配符號
\{n\} 匹配前面字符出現n次
\{n,\} 匹配前面字符至少出現n次
\{n,m\} 匹配前面字符出現n~m次
注意:符號*前面必須至少有兩個字符(當符號*後面沒有字符時)或必須*前面至少有一個字符(當符號*後面至少有一個字符時)纔有意義
符號.前後必須同時有字符纔有意義
[]使用時前面
1.符號* 0個或多個在*字符前面的那個普通字符
例子 hel*o
hel*o 可以是heo,helo,hello,helllo可以可以出現0到無窮次
2.字符 . 匹配任意字符
例子 .7
.7 首先這是兩個字符,其中後面一個字符是7,而前面一個字符是任意一個鍵盤上可以輸出的字符
...7 這是4個字符,最後一個還是7,前面3個字符是任意一個鍵盤上可以輸出的字符
綜合
hel*o. 這個表示heo後面任意一個字符
helo後面任意一個字符
hello後面任意一個字符
hel.*o 這個就表示以hel開頭,o結尾的任意字符都可以匹配
3.符號^ 匹配行首,或後面字符是非
例子 ^cloud
^cloud 這個表示行首的字符是cloud的行都會被匹配
綜合
^h.*o 表示必須以行首h開頭以o結尾中間任意字符
4.符號$ 匹配行尾
例子 hel$ 表示必須以hel作爲行尾
綜合 ^h.*o$ 表示以h爲行首以o爲行尾中間任意字符
^$ 表示爲空
^hjo$ 表示行首位h,行尾爲o中間爲j進行匹配,也就是說這 一個只有hjo纔會被匹配
5.符號[] 匹配字符集合
例子1.窮舉
[123456789] 表示匹配任意一個數字
例子2.-的使用(範圍)
[1-9] 表示匹配任意一個數字
[a-z] 匹配任意一個小寫字母
[A-Z] 匹配任意一個大寫字母
[^]
^在[]裏表示取反
例子[^b-d] 表示匹配不在b到d之間的所有字符
綜合
[A-Za-z] [A-Za-Z]* 匹配所有的英文單詞
[A-Za-z1-9] [A-Za-z1-9]* 匹配所有的英文單詞和數字
6.符號\ 轉義符,屏蔽一個元字符的特殊意義
\* 匹配*字符,
7.符號\<\> 精確匹配符號
屏蔽<>
例子\<the\> 匹配the單詞而不是含有the的單詞或行
8.\{\}系列符號 匹配前面字符重複出現的次數
\{n\} 匹配前面字符出現n次
例子
a\{4\} 匹配aaaa
\{n,\} 匹配前面字符至少出現n次
例子
a\{2,\} 匹配aa,aaa,aaaa ......
\{n,m\} 匹配前面字符出現n~m次
a{2,4\} 匹配aa,aaa,aaaa
綜合
[a-z]\{5\} 匹配5個小寫字母
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
擴展正則表達式(支持awk,perl等工具)
? 匹配0個或1個在其之前的那個普通字符
+ 匹配1個或多個在其之前的那個普通字符
() 表示一個字符集合或用在表達式中
| 表示“或”,匹配一組可選的字符
1.符號?
例子
jo?b 匹配job joob
2.符號+
例子
s+eu 匹配sseu ssseu......
3.符號() 和符號| 表示一組可選字符的集合
例子
re(a|e|o)d 匹配 read reed reod
4.符號|
re1|re2|re3...
+++++++++++++++++++++++++++++++++++++++++++++++
通配(支持bash shell)
符號* 表示任意位的任意字符
符號? 表示一個任意字符
符號^ 表示取反
符號[] 表示字符集合
符號[^] 表示取反字符集合
符號{} 表示一組表達式的集合
1.符號*
例子 ls a* 查看所有以a開頭的文件
2.符號?
例子
ls a? 查看以a開頭的包含2個字符的文件
3.符號[]
例子
ls a[1-10] 查看a1.a2...a10
ls a[a-z]* 查看以a開頭的含有小寫字母的文件
4.符號[^]
例子
ls a[^1-2] 查看不含有a1,a2的所有文件
5.符號{}
例子
ls a{[^1-2],a?,b*} 查看不包含a1,a2,的所有文件
或查看文件a和aa,或查看所有以b開頭的文件