1. 程式人生 > 程式設計 >shell指令碼中的正則表示式詳解

shell指令碼中的正則表示式詳解

正則表示式的概念及特點:

  正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,
這個“規則字串”用來表達對字串的一種過濾邏輯。規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普
通字元一起表示一個模式,這就是正則表示式(Regular Expression)。
給定一個正則表示式和另一個字串,我們可以達到如下www.cppcns.com的目的:

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

正則表示式的特點:

  1. 靈活性、邏輯性和功能性非常的強;

  2. 可以迅速地用極簡單的方式達到字串的複雜控制。
  3. 對於剛接觸的人來說,比較晦澀難懂。

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

一、正則表示式

1、定義

(1)、通常用於判斷語句中,用來檢查某一字串是否滿足某一格式

(2)、正則表示式是由普通字元與元字元組成

(3)、普通字元包括大小寫字母、數字、標點符號及一些其他符號

(4)、元字元是指在正則表示式中具有特殊意義的專用字元,可以用來規定其前導字元(即位於元字元前面的字元)在目標物件中的出現模式

2、基礎正則表示式常見元字元(支援的工具:grep、egrep、sed、awk)

\:轉義字元,用於http://www.cppcns.com取消特殊符號的含義,例: !、\n、$等
^:匹配字串開始的位置,例: a、、the、 #、[a-z]
$:匹配字串結束的位置,例:word$、^$̲匹配空行
.:匹配除\n之外的任意的一個字元,例: go.d、 g..d
*:匹配前面子表示式0次或者多次,例: good、 go.d
[list]:匹配list列表中的一個字元,例: go[ola]d,[abc]、[a-z]、[a-z0-9]、[0-9]匹配任意一位數字
[^list]:匹配任意非list列表中的一個字元,例: [^0-9]、[^A-Z0-9]、[^a-z]匹配任意一位非小寫字母

\{n\}:匹配前面的子表示式n次,例: go{2}d、'[0-9]{2}'匹配兩位數字
\{n,\}:匹配前而的子表示式不少於n次,例: go{2,}d、'[0-9]{2,}'匹配兩位及兩位以上數字
\{n,m\}:匹配前面的子表示式n到m次,例: go{2,3}d、'[0-9]{2,3}'匹配兩位到三位數字
注:egrep、awk使用{n}、{n,}、{n,m}匹配時“{}”前不用加“\”

3、擴充套件正則表示式元字元:(支援的工具:egrep、awk)

+:匹配前面子表示式1次以上,例:gd+d,將匹配至少一個0,如god、good、goood等
?:匹配前面的子表示式0次或者次,例:go?d,將匹配gd或god
():將括號中的字串作為一個整體,例:g(oo)+d,將匹配oo整體1次以上,如good、gooood等
l:http://www.cppcns.com以或的方式匹配字串,例:g(oo | la)d,講匹配good或者glad

二、正則表示式示lTdGY

[email protected]

[email protected]

wang [email protected]

qian@[email protected]

[email protected]

要求:

使用者名稱@:字元長度在6位及以上,開頭只能是字母或者_,中間可使用的符號有. - # _

子域名:可能是大小寫字母,數字,_ -

.頂級域名:字串長度一般在2到5之間 

到此這篇關於shell中的正則表示式的文章就介紹到這了,更多相關shell指令碼正則表示式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!