1) . : 匹配任意單ASCII 字符,可以為字母,或為數字。
2) 舉例: ..XC..匹配deXC1t、23XCdf 等,.w..w..w.匹配rwxrw-rw-
行首以^匹配字符串或字符序列
1) ^ : 允許在一行的開始匹配字符或單詞。
2) 舉例: ^.01 匹配0011cx4、c01sdf 等,^d 匹配drwxr-xr-x、drw-r--r--等
行尾以$匹配字符串或字符
1) $ : 在行尾匹配字符串或字符,$符號放在匹配單詞后。
2) 舉例: trouble$ 匹配以單詞trouble 結尾的所有行
^$匹配所有空行
使用*匹配字符串中的單字符或其重復序列(與文件名置換中的"*"不一樣)
1) * : 一個單字符后緊跟*,匹配0 個或多個此單字符。
2) 舉例: compu*t 將匹配字符u 一次或多次,即匹配computer computing compuuute 等
1033* 可以匹配 101333 10133 1013444 等
3) 在正則表達式中使用"*",有時會產生非預期的結果。
使用\屏蔽一個特殊字符的含義
1) \ : 用來屏蔽一個元字符的特殊含義。因為有時在shell 中元字符有特殊含義。\可以使其失去應有意義。
2) 舉例: 在正則表達式中匹配以*.pas 結尾的所有文件: \*\.pas$
使用[]匹配屬於一個范圍或集合單個字符
1) [ ] : 匹配"[ ]"內的字符。可以是一個單字符,也可以是字符序列。可以使用"-"表示括號"[ ]"內字符序列范圍,
如用[1-5]代替[12345]。可以用逗號","分隔括號"[]"內的字符。
2) 當"^"符號當直接靠着"[",意指否定或不匹配括號"[]"里內容
3) 舉例: [0-9]匹配任意一個數字;[a-z]匹配任意一個小寫字母;[0-9A-Za-z]匹配任意字母或數字;
[C,c]omputer 匹配Computer 和computer;[^a-zA-Z]匹配任一非字母型字符
使用"\{\}"匹配模式結果出現的次數
1) pattern\{n\}
2) pattern\{n,\} : 匹配模式pattern 最少出現n 次的情形。
3) pattern\{,m\} : 匹配模式pattern 最多出現m 次的情形。
4) pattern\{n,m\} : 匹配模式pattern 出現次數在n 與m 之間的情形。
5) 舉例: A\{2\}B 匹配的值為AAB
A\{2,\}B 匹配的值可以是AAB 或AAAAAB,但不能 匹配AB
A\{2,4\}B 匹配的值可以是AAB、AAAB、AAAAB,但不能 匹配AB 或AAAAAB 等
[0-9]\{4\}CX[0-9]\{4\} 匹配數字出現4 次后跟CX,最后是數字出現4 次的情形
6) 實際上真正的格式是 {n} {n,} {,m} {n,m},只不過對"{"和"}"應用了Esacpe 字符"\"。
經常使用的正則表達式舉例
[Ss]igna[lL] 匹配單詞signal、signaL、Signal、SignaL
[Ss]igna[lL]\. 同上,但加一句點
^USER$ 只包含USER 的行
\. 帶句點的行
^d..x..x..x 對用戶、用戶組及其他用戶、組成員有可執行權限的目錄
^[^l] 排除符號鏈接文件后的文件目錄列表(即不是以"l"開始的行)
[yYnN] 大寫或小寫y 或n
^.*$ 匹配行中任意字符串
^......$ 包括6 個字符的行
[a-zA-Z] 任意單個字母
[a-z]* 至少一個小寫字母
[^0-9\$] 非數字或美元符號
[123] 1 到3 中一個數字
\^q 以^q 開始行
^.$ 僅有一個字符的行
^\.[0-9][0-9] 以一個句點和兩個數字開始的行
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 類IP 地址格式
nnn.nnn.nnn.nnn
.* 匹配任意多個字符