Unix Regex
基本元字符集(Metacharacters)及其含義
^ 隻隻匹配行首
$ 隻隻匹配行尾
* 隻一個單字符後緊跟*,匹配0個或多個此單字符
[ ] 隻匹配[ ]內字符。可以是一個單字符,也可以是字符序列。可以使用-
表示[ ]內字符序列範圍,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
/ 隻用來屏蔽一個元字符的特殊含義。因為有時在s h e l l中一些元字符有
特殊含義。/可以使其失去應有意義
. 隻匹配任意單字符
pattern/{n/} 隻用來匹配前麵p a t t e r n出現次數。n為次數
pattern/{n,/} 隻含義同上,但次數最少為n
pattern/{n,m/} 隻含義同上,但p a t t e r n出現次數在n與m之間
邊界匹配( Boundary Matchers)
如果要匹配所有空行,執行以下操作:
^ $
具體分析為匹配行首,又匹配行尾,中間沒有任何模式,因此為空行。
如果隻返回包含一個字符的行,操作如下:
^ . $
使用*匹配字符串中的單字符或其重複序列
使用此特殊字符匹配任意字符或字符串的重複多次表達式。例如:
compu*t
將匹配字符u一次或多次:
computer
computing
compuuuuuuut
使用/屏蔽一個特殊字符的含義
如果要在正則表達式中匹配以*.pas結尾的所有文件,可做如下操作:
/*/.pas
即可屏蔽字符*的特定含義。
使用[]匹配一個範圍或集合
使用[ ]匹配特定字符串或字符串集,可以用逗號將括弧內要匹配的不同字符串分開,但並
不強製要求這樣做(一些係統提倡在複雜的表達式中使用逗號),這樣做可以增加模式的可讀性。
使用“-”表示一個字符串範圍,表明字符串範圍從“-”左邊字符開始,到“-”右邊字 符結束。
假定要匹配任意一個數字,可以使用:
[0123456789]
然而,通過使用“-”符號可以簡化操作:
[0-9]
或任意小寫字母
[a-z]
要匹配任意字母,則使用:
[A-Za-z]
注意^符號的使用,當直接用在第一個括號裏,意指否定或不匹配括號裏內容。
[^a-zA-Z]
匹配任一非字母型字符,而
[^0-9]
匹配任一非數字型字符。
使用/{/}匹配模式結果出現的次數
請看第一個例子,匹配字母A出現兩次,並以B結尾,操作如下:
A/{2/}B
匹配值為AAB
匹配A至少4次,使用:
A/{4,/}B
可以得結果AAAAB或AAAAAAAB,但不能為AAAB。
經常使用的正則表達式舉例
^ 對行首
$ 對行尾
^[the] 對以the開頭行
[Ss]igna[lL] 對匹配單詞signal、signaL,Signal、SignaL
[Ss]igna[lL]/. 對同上,但加一句點
[mayMAY] 對包含may大寫或小寫字母的行
^USER$ 對隻包含USER的行
[tty]$ 對以tty結尾的行
/. 對帶句點的行
^d..x..x..x 對用戶、用戶組及其他用戶組成員有可執行權限的目錄
^[^l] 對排除關聯目錄的目錄列表
[.*0] 對0之前或之後加任意字符
[000*] 對000或更多個
[iI] 對大寫或小寫I
[iI][nN] 對大寫或小寫i或n
[^$] 對空行
[^.*$] 對匹配行中任意字符串
^......$ 對包括6個字符的行
[a-zA-Z] 對任意單字符
[a-z][a-z]* 對至少一個小寫字母
[^0-9/$] 對非數字或美元標識
[^0-0A-Za-z] 對非數字或字母
[123] 對1到3中一個數字
[Dd]evice 對單詞device或Device
/^q 對以^q開始行
^.$ 對僅有一個字符的行
^/.[0-9][0-9] 對以一個句點和兩個數字開始的行
'"Device"' 對單詞device
De[Vv]ice/. 對單詞Device或device
[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
[^.*$] 對匹配任意行
More info about Java Regex
最後更新:2017-04-02 03:42:36