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

2022-09-25 07:06:14 字數 1750 閱讀 3727

正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,

這個「規則字串」用來表達對字串的一種過濾邏輯。規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普

通字元一起表示乙個模式,這就是正規表示式(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)

\:轉義字元,用於取消特殊符號的含義,例: !、\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次,例: god、'[0-9]'匹配兩位數字

\:匹配前而的子表示式不少於n次,例: god、'[0-9]'匹配兩位及兩位以上數字

\:匹配前面的子表示式n到m次,例: god、'[0-9]'匹配兩位到三位數字

注:egrep、awk使用、、匹配時「{}」前不用加「\」

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指令碼 正規表示式

一 正規表示式 正規表示式是用來描述字串排列和匹配模式的一種語法規則,是字串的模式分割 匹配 查詢和替換操作。正規表示式是包含匹配,操作字串,如grep,awd,sed,而萬用字元是完全匹配,如ls,find,cp 正則的與萬用字元的不同,如正規表示式aa 第二個a不起作用,意思是以a開頭的,而萬用...

shell 指令碼 正規表示式

字元類 character class 如上例的x和 y,它們在模式中表示乙個字元 但是取值範圍是 一類字 符中的任意乙個。數量限定符 quantifier 郵件位址的每一部分可以有乙個或多個x字元 ip位址的每一部 分 可以有1 3個y 字元位置限定符 anchor 部分,用普通字元 和 隔 開 ...

shell指令碼 正規表示式

正規表示式分為基礎正則和擴充套件正則,都是為了匹配符合預期要求的字串 只需要記住,對檔案內容或是展示文字的操作都是正則,而對目錄或檔名的操作則都是萬用字元 例如find指令 擴充套件正則包含基礎正則,而且多出了 四個指令 注意這裡的 要和管道符分開 擴充套件正則不需要像基礎正則一樣對某些符號進行轉義...