淺談正則表達式

   在我們使用Linux的時候,經常需要對一些文本進行處理,這裏簡單介紹一個小工具:grep(Global search REgular expression and Print out the line)。

   

   簡單的說正則表達式就是處理字符串的方法,它可以通過一些特殊符號的配合使用,輕鬆讓使用者輕鬆對數據進行過濾,達到查找、刪除、修改某字符的處理程序。


    REGEXP :由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。

    

   元字符分類:字符匹配、匹配次數、位置錨定、分組

    

   語法:grep [OPTIONS] PATTERN [FILE...]


常用選項:

--color=auto:  對匹配到的文本着色顯示

-v:  顯示不被pattern 匹配到的行(即取反)

-i:  忽略字符大小寫

-n:  顯示匹配的行號

-c:  統計匹配的行數

-o:  僅顯示匹配到的字符串

-q:  靜默模式,不輸出任何信息

-A #: after,  後#行 行

-B #: before,  前#行 行

-C # :context,  前後各#行 行

-e :實現多個選項間的邏輯or 關係(grep –e ‘a ’ -e ‘b’ file)

-w :匹配 整個單詞

-E :相當於egrep

-F :相當於fgrep ,不支持正則表達式


字符匹配:


.        匹配任意單個字符

[]       匹配指定範圍內的任意單個字符

[^]      匹配指定範圍外的任意單個字符

[:alnum:]  代表字母和數字

[:alpha:]  代表任何英文大小寫字符,亦即 A-Z, a-z

[:lower:]  小寫字母 

[:upper:]  大寫字母

[:blank:]  空白字符(空格和製表符)

[:space:]  水平和垂直的空白字符(比[:blank:] 包含的範圍廣)

[:cntrl:]  不可打印的控制字符(退格、刪除、警鈴...) )

[:digit:]  十進制數字 

[:xdigit:]  十六進制數字

[:graph:]  可打印的非空白字符

[:print:]  可打印字符

[:punct:]  標點符號


匹配次數:


作用:用在要指定次數的字符後面,用於指定前面的字符要出現的次數

.   匹配一個字符

[]  中括號內的任意字符,多選一

[^]  中括號內的不選,去括號內的反

*   匹配 前面的字符任意次,包括0次(一般處於貪婪模式:儘可能長的匹配)

.*  任意 長度的任意字符

\?  匹配 其前面的字符0 或1次 次

\+  匹配 其前面的字符至少1次 次

\{n\}  匹配 前面的字符n次 次

\{m,n\}  匹配 前面的字符至少m 次,至多n次 


位置錨定:定位出現的位置

^  行首錨定,用於模式的最左側

$  行尾錨定,用於模式的最右側

^PATTERN$ 用於模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< 或 或 \b  詞首錨定,用於單詞模式的左側

\> 或 或 \b  詞尾錨定;用於單詞模式的右側

\<PATTERN\>  僅匹配單詞

\|        或者(a\|b: a 或b )


分組:\(\)  將一個或多個字符捆綁在一起,當作一個整體進

行處理,\string表示從左側起第一個左括號以及與之匹配右括號之間的

模式所匹配到的字符。如:\(root\) \string1, \string2, \string3, ..


後向引用:引用前面的分組括號中的模式所匹配字符 , 而非模式本身






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章