正規表示式 和 萬用字元

2021-06-08 05:45:20 字數 1846 閱讀 1601

正規表示式

正規表示式主要是用來描述乙個句法規則的模式。其實說的通俗一點,就是利用字元和元字元的組合,對一些符合既定句法的模式進行模糊匹配。它的主要功能是文字查詢和字串操作。

正規表示式的基本元素包括普通字元和元字元,在linux shell裡面,常用的正規表示式元字符集為:s=  \  \ },每乙個元字元都有自己在正規表示式中的含義,下面來介紹一下:

「 * 」符號:表示匹配前面乙個普通字元0次或多次。注意這裡是乙個普通字元,即如果是jo*b的話,那麼*就匹配字元「o」任意次,而不是匹配「jo」串。

「 . 」符號:表示匹配任意乙個字元。字元「 . "就表示乙個字元,這個字元可以是任意字元。例如字串 ...73 就表示前面3個字元為任意字元(包括空格),第4個和第5個字元分別是7和3。

「 ^ 」符號:表示匹配行首。例如:^cloud就表示匹配以cloud字串開頭的所有行。與上面匹配乙個字元不一樣,這裡匹配的是後面跟著的整個字串。

」 $ "符號:表示匹配行尾。例如:cloud$ 就表示匹配以cloud字串結尾的所有行。結合上面的匹配行首,^$表示匹配空行。

「 "符號:表示匹配方括號裡面的字符集中的乙個。例如:數字0-9中的任意乙個數字都滿足[0-9]這個表示式。值得注意的是,當^放在裡面的時候,^就不再表示行首,而是表示取反。如:[^7-9]則表示非7-9中的任意乙個數字才滿足這個表示式。

」 \ 「符號:是轉義字元。如果你寫的正規表示式裡面包括元字元,而你又想將它當做普通字元用的話,就要在前面加上轉義符號" \ "了。例如:\$就表示乙個普通字元」$"。

「\<\>"符號:表示精確匹配<>內的字元,」 \ 「是用來轉義<>這兩個字元的。例如:\表示匹配包含」the「的行,由於精確匹配,所以,」them「,」theory「這些單詞所在的行並不會被匹配到。

」\"符號:與" * "類似,表示匹配前面的乙個字元任意多次。但是「\」可以指定重複的次數,如\則表示重複前面的字元3次;\表示重複前面的字元至少3次;\表示重複3到5次。例如:jo\b則表示重複字元o三次,即jooob;jo\b則表示至少重複o三次,即jooob,joooob等都符合;\則匹配jooob,joooob,jooooob這幾個字串。

萬用字元

初學的時候對於正規表示式和萬用字元的理解很模糊,兩個都是可以進行模糊匹配的,到底什麼時候用才是正規表示式,什麼時候用是萬用字元呢?其實,我們登入系統之後,系統的bash shell並不支援正規表示式的,也就是說,我們如果使用bash shell的某些命令時使用正規表示式,shell可能會認不出來,只有當我們使用類似grep,sed,awk等工具的時候才有效。所以,我們在使用bash shell的時候也想達到模糊匹配的目的的話,就要使用萬用字元了。

萬用字元是使用正規表示式的一些元字元來的,常用的元字符集:e=  ^ }。不過,這個萬用字元的元字元意義跟正規表示式裡面的不太一樣。例如:

「 * "字元不再表示匹配前面乙個字元任意多次,而是表示任意位置的任意字元。例如:phi*ip,則可以匹配philip,phillip,philsaip等開始三個是phi和結尾兩位是ip的任意字元。例如ls -l *.awk表示匹配以.awk結尾的所有檔案,*表示任意長度任意字元組合。

" ? 」字元才表示任意乙個字元。同正規表示式元字元的" . " 

" {} 「字元不需要轉義。在{}表示的是表示式集合。如:ls -l 則表示列出所有以a-h字元開頭的.awk檔案的和以0開頭,後面接乙個任意字元的.pem檔案

" ^ "字元也不是表示行首,而是代表取反。

正規表示式和通配的應用環境上有些不一樣,但是都能夠達到模糊匹配的效果。在後面介紹到的使用grep,sed和awk等工具對於檔案的查詢以及各種操作中,正規表示式的匹配作用更加明顯。

萬用字元和正規表示式

1.like操作符 2.百分號萬用字元 在搜尋串中,表示任何字元出現的任意次數。不能匹配null,如like jet 表示以jet開頭的後面不管多少字元的匹配。如果區分大小寫查詢,使用binary select from test where binary name test 3.下劃線萬用字元 下...

萬用字元和正規表示式

萬用字元叫做檔名萬用字元更能突出其作用範圍,因為 萬用字元主要用於檔名的通配 可以在 shell 命令中使用,常用的萬用字元有以下幾個 星號用來匹配 任意長度 的任意字元。問號用來匹配 任意單個字元。匹配指定範圍 之外的任意單個字元。如 a z lower 匹配小寫字母 a z之外的任意單個字元 匹...

萬用字元 正規表示式

萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl。當您鍵入 ls txt 命令並按 enter 後,尋找哪些檔案同 txt 模式相匹配的任務不是由 ls 命令,而是由 shell 自己完成。這需要對命令列是如何被 shell 解析的作進一...