1. 程式人生 > >[一天幾個linux命令] shell指令碼之正則表示式

[一天幾個linux命令] shell指令碼之正則表示式

shell指令碼之正則表示式

原文連結:Linux–shell指令碼之正則表示式

概念及特點

概念

正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普通字元一起表示一個模式,這就是正則表示式(Regular Expression)。

給定一個正則表示式和另一個字串,我們可以達到如下目的:

  • 給定的字串是否符合正則表示式的過濾邏輯(稱作"匹配");
  • 可以通過正則表示式,從字串中獲取我們想要的特定部分。

特點

  • 靈活性、邏輯性和功能性非常強
  • 可以迅速地用極簡單的方式達到字串的複雜控制
  • 對於則接觸的人來說,比較晦澀難懂

由於正則表示式主要應用物件是文字,因此它在各種文字編輯器都有應用,不到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表示式來處理文字內容。

正則表示式有三部分組成

在這裡插入圖片描述
例如找出多有符合[email protected]模式的字串(也就是mail地址),要求x可以是字線、數字、下劃線、小數點、短劃線、emial地址的每一部分可以有一個或多個x字元,例如[email protected]

[email protected]等,當然,符合這個模式的並不一定是合法的mail地址,但至少可以做一次初步的篩選,篩選掉類似於a.b、[email protected]等不符合的字串。再比如說,找出所有符合yyy.yyy.yyy.yyy模式的字串(IP地址),要求y是0-9的數字,IP地fhgr每一部分可以有1~3個y字元。

字元類

字元類:上例中的x和y,他們在模式中表示一個字元,但是取值範圍是一類字元中的任意一個。

在這裡插入圖片描述

例如:
在這裡插入圖片描述

數量限定符

數量限定符(Quantifier):郵件地址的每一個部分可以有一個或多個x字元,IP地址的每一部分別可以有1-3個y字元
在這裡插入圖片描述

例如:
在這裡插入圖片描述

位置限定符

位置限定符(Anchor):描述各種字元類以及普通字元之間的位置關係,例如郵件地址分三部分,用普通字元@和.隔 開,IP地址分四部分,用.隔開,每一部分都可以用字元類和數量限定符 描述。為了表示位置關係,需要位置限定符的概念,將在下面介紹。

在這裡插入圖片描述

例如:

在這裡插入圖片描述

特殊字元

在這裡插入圖片描述

例如:

在這裡插入圖片描述