shell腳本中的正則表達式詳解

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

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

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

正則表達式的特點:

  1. 靈活性、邏輯性和功能性非常的強;
  2. 可以迅速地用極簡單的方式達到字符串的復雜控制。
  3. 對於剛接觸的人來說,比較晦澀難懂。

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

一、正則表達式

1、定義

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

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

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

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

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

\:轉義字符,用於取消特殊符號的含義,例: !、\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:以或的方式匹配字符串,例:g(oo | la)d,講匹配good或者glad

二、正則表達式示例

[email protected]

[email protected]

wang [email protected]

qian@[email protected]

[email protected]

要求:

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

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

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

到此這篇關於shell腳本中的正則表達式的文章就介紹到這瞭,更多相關shell腳本正則表達式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: