Mastering Regular Expressions
正則表達(dá)式,是用來進(jìn)行文件檢索的有效工具
最常用的文件檢索指令為: grep 或 egrep
正則表達(dá)式由兩種字符構(gòu)成
- 元字符 metacharacters ---- 特殊字符
- 文字 literal ---- 除元字符外的普通字符
元字符: ^ $
元字符: [ -
符號 ^ 象征行開始
符號 $ 象征行結(jié)束
這兩個元字符,匹配的不是具體的字符,而是文本位置
這兩個字符, 可以視為Anchor 真如船鉤一樣, 掛到文本相應(yīng)的位置
[例] 串: ^bit 表示檢索所有以bit為開頭的文本行
[例] 串: ^cat$ 表示匹配檢索一行, 該行內(nèi)容為字符串cat
因為 ^ 和 $ 分別指定了要匹配串的前后位置, 中間內(nèi)容就固定了
十分實用的集合
集合, 使用方括號符號 [] 表示
正則里,可以選擇匹配指定范圍內(nèi)(集合內(nèi))的字符
比如, 有時無法分清gray還是grey
這是, 可以實用正則串: gr[ae]y 來進(jìn)行查找
###
終端: egrep 'sep[ae]r[ae]te' somewhere
則, 正則串匹配范圍有四, 分別是
separate, seperate, seperate, seperete
一種很常見的應(yīng)用是, 無視大小寫
比如要檢索smith 這個name 正則串可以寫成
[Ss]mith
- 連字符 - (配合集合使用)
如果要檢索匹配一個數(shù)字,那么寫集合就太麻煩了
bad case: [0123456789]
crt case: [0-9]
Another case: [A-Fa-z0-9]
則上面這一個字符
匹配范圍為: 0~9的整數(shù) + a-z的小寫字母 + A-F大寫字母
[注]: 連字符 - 僅在集合內(nèi)使用,才是具有特殊功能的元字符.
????????連字符位于集合外部,就是一個普通的字符.
-
集合內(nèi)的元字符 ^ : 排除功能(配合集合使用)
? ? 集合內(nèi)的符號 ^ means negate
[1-6] 表示匹配字符, 范圍從1~6均可
在 集合內(nèi)使用 元字符 ^ 意為取反
[^1-6] 表示匹配一個字符, 范圍除1~6外均可
[注]: 字符 ^ 在正常情況下是一個anchor, 掛住文本行的開頭; 而在集合內(nèi)的 ^ 符, 是一個代表反義排除功能的特殊符號