Linux基礎知識:正則表達式

    什麼是正則表達式?

    我理解的正則表達式就是用來匹配字符串的一種方法。通過一種規則去幫助用戶更快捷的達到查找的目的。

    對於系統管理員來說,正則表達式是非常重要的。因爲在系統每天都會產生相當多的信息,比如系統的日誌文件中記錄了很多系統產生的相關信息,如果去查看那麼多的信息是相關費時的,而正則表達式則可以用來查詢我們需要的信息,過濾掉那些不需要的信息,從而方便我們處理。

    

        正則表達式分爲幾種,常用的是

            Basic REGEXP: 基本正則表達式

            Extended REGEXP:擴展正則表達式

        

字符集合表示方式:   

[[:lower:]]

所有的小寫字母;

[[:upper:]]

所有的大寫字母;

[[:alpha:]]

所有的字母;

[[:digit:]]

所有數字;

[[:alnum:]]

所有的字母和數字;

[[:punct:]]

所有的標點符號;

[[:space:]]

所有的空白字符;

 

[^[:lower:]]

除了小寫字母

 

grep:基本正則表達式

 

使用基本正則表達式定義的模式來過濾文本的命令貪婪模式儘可能長的去匹配

部分匹配顯示整行

 

-i:忽略大小寫

-o : 只顯示被匹配的字符串

--color:把匹配到的高亮

可用 alias grep='grep --color' 設置grep別名

-v:顯示沒有匹配到的行

-n:在顯示匹配文本的那一列之前標示出該列的是多少列 

-E:使用擴展表達式

 

字符匹配

.    :匹配任意單個字符

[]     :   匹配指定單個字符

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

 

次數匹配

        *     :   匹配其前面的字符任意次可以0

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

\{m,n\}:匹配其前面的字符最少m最多n

    例如\{2\}匹配其前面的字符最少2最多無上限無上限時n可省略

     \{0,2\}匹配其前面的字符最少0最多2,m不可省略

.*     : 任意長度的任意字符

 

錨定

^:其後面的字符錨定行首

$:其後面的字符錨定行尾

 

^PATTERN$  用模式匹配整行

^ab.*c$  ab開頭中間有任意並以c結尾的行

^$        匹配空白行

^[[:space:]]$  Tab鍵也算space 匹配完全空白行

 

\<其後面的字符錨定單詞首部        [ \b.*\b ==\<.*>\   \> 不等於 \b ]

\>其後面的字符錨定單詞尾部 

\(\) : 分組\(ab\)  用於反向引用  子表達式   \1,\2,\3….

  

在子表達式中(a.b).*\1 表示匹配第一個子表達式匹配到的字符

      amb hello anb 不匹配

amb hello amb 匹配

 

 

 

eqrep:擴展正則表達式

字符匹配:(grep一致

.    :匹配任意單個字符

[]     :   匹配指定單個字符

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

 

次數匹配

*     :   匹配其前面的字符任意次可以0

?       :    匹配其前面的字符1次或0(相比grep不用加\)

+       :    匹配其前面的字符至少1?+     =    grep*)

{m,n} :匹配其前面的字符最少m最多n(相比grep不用加\)

 

錨定

^:其後面的字符錨定行首

$:其後面的字符錨定行尾

\< 其後面的字符錨定單詞首部

\> 其前面的字符錨定單詞尾部

(): 分組, 用於反向引用  子表達式   \1,\2,\3….

 

|:或者 a|b 表示 a或者b

C|cat  表示 C或者cat

(C|c)at 表示 Cat或者cat

    

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