正則表達式常用元字符

正則表達式的使用需要借助于工具程序來實現,我們使用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 22:43
下一篇 2015-03-11 10:00

相關推薦

  • DNS and BIND 配置指南

    前言     說來接觸Linux也有一年了,BIND是我曾經學習RH系Linux接觸的第一個服務,對我有著莫大的意義,當初差點因為這個服務難以配置而放棄Linux,今天學完馬哥的bind相關系列視頻之后,寫一篇DNS and BIND的基礎到進階。 一、DNS的基礎知識 DNS是什么? DNS(Domain Name …

    Linux干貨 2016-03-21
  • 網絡配置管理:ifcfg、iproute2和ss等相關命令介紹(不完整,需要后期完善)

    網絡配置管理:ifcfg、iproute2和ss等相關命令介紹 ifcfg家族: ifconfig [interface] ifconfig interface [aftype] options | address …   -a :查看所有 接口信息 add<地址>:設置網絡設備IPv6的ip地址 del<地址>…

    Linux干貨 2017-01-19
  • 馬哥教育網絡班21期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@itop ~]# cp -r /etc/skel /home/tuserl [root@itop ~]# chmod -R&nbsp…

    Linux干貨 2016-08-01
  • Linux常用命令使用方法

    下面以一些常用的Linux命令為例講解一下Linux命令的使用方法。 1.  ifconfig – 配置網絡接口 | 對象 | 參數 | 含義 || —— | —— | —— |網卡名 | / | 查看指定網卡IP的地址,不指定默認查看所有網卡地址網卡名 | up …

    Linux干貨 2017-09-01
  • grep,find用法-2

    1、顯示當前系統上root、fedora或user1用戶的默認shell; grep -E “^(root|fedora|user1)>” /etc/passwd | cut -d: -f1,7 [root@bogon Desktop]# grep -E “^(root|fedora|user1)\>” /etc/pass…

    Linux干貨 2017-08-04
  • ansible部分功能詳解

    一. 架構: 組成     ansible core:     modules:     Core Module     Custom Module   Host Inventory: 主機清單       File   &nbs…

    Linux干貨 2016-11-11
欧美性久久久久