正則表達式常用元字符

正則表達式的使用需要借助于工具程序來實現,我們使用grep來演示正則表達式元字符的使用。

    grep使用方法    

        grep是一種文本搜索工具,根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,顯示能匹配到的行。

                正則表達式常用元字符

                使用grep在/etc/passwd文件中找到有”roo”關鍵字的行并顯示了出來

         grep命令的語法:

            grep [OPTIONS] PATTERN [FILE…]  

                PATTERN:文本字符和正則表達式的元字符組合而成的匹配條件                 

                OPTOINS:此處只列舉常用的選項

                    –color=auto:給關鍵字加上顏色

                        正則表達式常用元字符

                        可以在全局配置文件/etc/bashrc中定義命令別名grep=”grep –color=auto”,以使grep命令默認輸出顏色

                        正則表達式常用元字符

                     -i:忽略大小寫

                        正則表達式常用元字符

                    –v:顯示沒有被模式匹配的內容                

                        正則表達式常用元字符

                    -o:只顯示被模式匹配的串本身

                           正則表達式常用元字符            

                    -n:顯示行號

                        正則表達式常用元字符 

                    -A #:顯示匹配字符的后面“#”行

                        正則表達式常用元字符

                        顯示包含roo字符行的后面一行

                    -B #:顯示匹配字符的前面“#”行

                        正則表達式常用元字符

                        顯示包含ROO字符行的前面一行

                    -C #:顯示匹配字符的前后面“#”行

                        正則表達式常用元字符

                        顯示包含roo字符的前后各一行

                   -E:擴展正則表達式

正則表達式:Regular Expression, REGEXP    

     常用正則表達式分為兩種

            1. 基本正則表達式(Basic REGEXP)

                grep

            2. 擴展正則表達式(Extended REGEXP)

                egrep、grep -E

    元字符:不表示其字面意義,而用于額外功能性描述

        基本正則表達式的元字符:

            字符匹配

                    . :匹配任意單個字符

                        正則表達式常用元字符

                         r..t:表示以r開頭,中間包含兩個任意字符并以t結尾的字符串

                    [ ]:匹配指定范圍內的任意單個字符

                        正則表達式常用元字符

                        r[a-z]t:表示以r開頭,中間包含一個任意小寫字母并以t結尾的字符串

                        可以使用一些特殊符號還表示特定的值范圍 

                             [[:digit:]]  :表示數字,相當于[0-9]

                             [[:lower:]]:表示小寫字母,相當于[a-z]

                             [[:upper:]]:表示大寫字母,相當于[A-Z]

                             [[:space:]]:表示任何會產生空白的字符,如空格鍵、tab鍵等

                             [[:punct:]]:表示標點符號

                             [[:alpha:]] :表示任何大小寫字母,相當于[a-zA-Z]

                             [[:alnum:]]:表示任何大小寫字母和數字,相當于[0-9a-zA-Z]

                    [^]:匹配指定范圍外的任意單個字符                 

                        正則表達式常用元字符

                        r[^[:lower:]]t:表示以r開頭,中間包含一位非小寫字母并以t結尾的字符串                                 

                次數匹配:用于實現指定其前面的字所能夠出現的次數                                       

                    *:任意長度,前面的字符可以出現任意次

                        正則表達式常用元字符

                         r*t:其中r*表示可以為空字符或一個連續r以上的字符;

                            如果需要至少兩個r以上的字符串時,使用rrr*來表示

                                正則表達式常用元字符

                            同理需要至少三個r以上的字符串時,使用rrrr*來表示

                               正則表達式常用元字符

                    \?:匹配其前面的字符一次或0次,它前面的字符是可有可無的,其中\為轉義字符

                            正則表達式常用元字符

                            rr\?t:表示以r開頭,中間有一個或者為空字符并且以t結尾的字符串

                      \{m\}:m次,它前面的字符要出現m次

                            正則表達式常用元字符

                            r\{2\}:表示包含兩個連續r的字符串

                      \{m,n\}:匹配其前面的字符至少m次,至多n次

                            正則表達式常用元字符

                            r\{2,4\}t:表示包含2至4個連續r,并且以t結尾的字符串

                        \{m,\}:最少匹配其前面的字符m次

                            正則表達式常用元字符

                            r\{5\}:表示最小出現5個連續的r并且以t結尾的字符串

                        \{0,n\}:最多匹配其前面的字符n次

                            正則表達式常用元字符

                            r\{0,5\}:表示最多出現5個連續的r并且為t結尾的字符串

                            正則表達式常用元字符

                            注:結果中出現了上面所示的行,是因為沒有限定條件不嚴格造成的,可以定義字符串首部來得到精確結果

                                正則表達式常用元字符                               

                      .*:任意長度的任意字符

                        正則表達式常用元字符

                        r.*t:表示r與t之間為任意字符(包括空字符)的字符串     

            位置錨定:用于定義字符位置的元字符

                ^:錨定行首,此字符后面的任意內容出現在行首。

                    正則表達式常用元字符

                    查找以r開頭t結尾的4個字符的字符串開頭的行

                $:錨定行尾,此字符前面的任意內容出現在行尾

                    正則表達式常用元字符

                    查找以n結尾的行                  

                 ^$:空白行

                    正則表達式常用元字符                     

                \<或\b:其后面的任意字符必須作為單詞首部出現

                    正則表達式常用元字符

                    正則表達式常用元字符

                    包含以op開頭的單詞的行

                \>或\b:其前面的任意字符必須作為單詞尾部出現                

                    正則表達式常用元字符                

                    正則表達式常用元字符        

                    包含以ot結尾的單詞的行        

                可以將兩個符號結合使用,精確查找單詞

                    正則表達式常用元字符

            分組:

                \( \):把內容分組,括號中的字符將被看作是一個整體進行操作

                    分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用

                    例如:當我們想要查找一個文件中包含至少1個ab的行

                    新建一個文件eg

                    正則表達式常用元字符

                    正則表達式常用元字符

                    引用:

                         \#:引用第#個括號所匹配到的內容,而非模式本身

                        例如:

                            新建一個文件eg1,內容如下:

                            正則表達式常用元字符                           

                            使用分組得到以下結果

                             正則表達式常用元字符

                             下面使用引用來查找對應的行

                             正則表達式常用元字符

                            正則表達式常用元字符                    

                            表達式中的括號是有編號的,從最左邊的左括號開始計算,編號從1開始,上面的表達式中有兩個左括號,edu前面的為編號1,qa前面的為編號2;而與左括號相對應的右括號則是從里向外就近匹配,上面的表達式中編號為2的表達式為\(qa[[:digit:]]\),編號為1的表達式為\(edc[0-9]\{3\}\(qa[[:digit:]]\)\);     

                            \1表示如果在行中有匹配編號為1的表達式的結果,并且在本行再次出現此表達式的結果時,則此行被選中;如上圖的查詢結果中1號表達式的結果為”edc123qa7“,而后面又出現了一次此字符串,所以該行被選中;\2則引用2號表達式的結果進行匹配查找,2號表達式的結果為”qa7″,所以結果中列出了再次出現”qa7″字符串的行。

        擴展正則表達式:

                 字符匹配:與基本正則表達式相同

                    . :匹配任意單個字符

                    [ ]:匹配指定范圍內的任意單個字符

                    [^]:匹配指定范圍外的任意單個字符

                次數匹配:無需轉義字符

                    *:任意長度,前面的字符可以出現任意次

                    ?:匹配前面的字符0或1次

                    +:至少1次= \{1,\}

                   {m}:精確匹配m次

                   {m,n}:至少m次,至多n次

                 錨定:與基本正則表達式相同,詞首與詞尾錨定依然需要轉義

                 分組:與基本正則表達式相同,無需轉義

                    ():無需轉義

                     引用:\1,\2,\3 …

                 或者:

                    a|b:a或者b

                        正則表達式常用元字符 

                    使用擴展正則表達式完成上面的引用查詢

                        正則表達式常用元字符

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/768

(0)
petmasterpetmaster
上一篇 2015-03-10
下一篇 2015-03-11

相關推薦

  • N22-北京-追求極境之人-RSYNC差分編碼同步原理

    1客戶端發送自己的filelist,filelist包含文件hashindexid(alert32)和關聯的文件chunkChecksum(MD5)和hashindexID以便進行快速查找,chunksize根據文件大小進行等分,不足均值部分直接發送不進行MD5校驗值生成 發送進程一次從生成器讀取一個文件索引號和關聯的塊校驗集合 2對于生成器發送的每個文件I…

    Linux干貨 2016-08-22
  • keepalived單主模型和nginx雙主模型

    主程序:keepalived 主配置文件:/etc/keepalived/keepalived.conf 單主模型ipvs: global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.…

    Linux干貨 2017-08-08
  • shell腳本編程之變量

    一、創建shell腳本文件   創建shell腳本時,必須在第一行指定要使用的shell。格式為:   #!/bin/bash   通常在shell腳本中,#代表注釋行,即不被執行的行,而第一行“#!”則是表示用哪個shell來執行腳本。   實例:   讓我們來執行一下這個腳本:   上面的結果顯…

    Linux干貨 2016-02-14
  • Linux-文件基本權限及特殊權限詳解

    Linux文件基本權限及特殊權限詳解 背景 Linux文件基本權限和特殊權限對于初學者很少煩惱,各種無法理解,所以在學到這一節時,將自己學到的以及自己的理解寫出來以檢查自己對這個部分的掌握情況。 什么是權限 在Linux里一切皆文件,所謂的權限就是用戶對文件(目錄也是以個文件)的操作范圍,對文件的操作包括讀、寫和執行,用戶對文件有不同的權限就能做相應的操作?!?/p>

    Linux干貨 2017-07-22
  • 通絡通信

    網絡詳解: 網絡的osi層次結構: 物理層: 以太網規定,連入網絡的所有設備,都必須具有”網卡”接口。數據包必須是從一塊網卡,傳送到另一塊網卡。 網卡的地址,就是數據包的發送地址和接收地址,這叫做MAC地址。 每塊網卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。 前6個十六進制數是廠商編號,后6個是該廠商…

    Linux干貨 2016-09-02
欧美性久久久久