正則表達式


原字符與通配符:

寫這個的目的是想說明一下,元字符與通配符,雖然都是使用特定的字符進行匹配。但是這是兩個東西。原字符與通配符之間沒有任何聯繫。不要在使用時元字符與通配符產生混淆。
元字符是正則表達式使用的特定匹配字符 。通配符是系統在匹配文件時使用的字符 。
元字符的作用是進行文本文件內容匹配的。而通配符是進行文件名稱匹配的。

通配符:

  可以使用 man7 glob 來查詢通配符 關鍵字 。

       *: 匹配多個字符 可以是0個即0到無限大(當然這是不可能的,linux 對文件名有長度要求)

       ?: 匹配單個字符

       [4-790]: 4-7 90 中的某一個數字,該表示法只能匹配一個字符,匹配的字符必須是中括號中給出的字符,可以使用- 表示範圍,如4-7表示的就是 4 5 6 7 這幾個字符 

       [^]排除 :排除括號中的字符,也就是說,該表示方法也只能匹配一個字符,匹配的字符必須不是括號中的內容,例:[^hello] ,非hello的任意字符。

注:下面代表的是一個集合須使用中括號,例:[[:digit:]]

       [:digit:]   任意的數字,相當於0-9

       [:lower:]        任意的小寫字母

       [:upper:]       任意的大寫字母

       [:alpha:] 任意的大小寫字母

       [:alnum:] 任意的大小寫字母及數字

       [:blank:]任意水平的空白字符

       [:space:]  任意的水平的或垂直的空白字符

       [:punct:]  任意的標點符號

       [:print:]   任意的可打印字符

       [:cntrl:]   任意的控制字符

       [:graph:]  任意的圖形字符

       [:xdigit:] 任意的十六進制字符

通配符到此結束

正則表達式:

正則表達式的匹配對象是文件內容。即文本 。正則表達式的使用還需要支持正則表達式的工具,如grep,sed等。

貪婪模式:

匹配時會首先匹配整個字符串,當整個字符串不匹配時,整個字符串去掉一個字符,然後再次進行匹配。所以貪婪模式會匹配到最大的匹配數量

懶惰模式:

匹配時,首先從目標的起始位置開始匹配,每次檢查一個字符。

正則表達式又分爲兩類 :基本的正則表達式,與擴展的正則表達式。


基本的正則表達式 :

字符匹配:

              . 匹配單一的任意字符,換行符除外。

              []匹配中括號中的字符的任意字符一次  

                     [helo]即匹配 h,e,l,o中的其中一個

              [^helo]取反,即取helo的補集.即不是h,e,l,o中的任意的一個字符一次

              [:digit:] 任意數字

              [:lower:]       任意的小寫字母

              [:upper:]  任意的大寫字母

              [:alpha:]  任意的大小寫字母

              [:alnum:] 任意的字母及數字

              [:blank:]  任意的水平空白字符

              [:space:]  任意的水平空白字符或任意的垂直空白字符

              [:punct:]  任意的標點符號

              [:print:]   任意的可打印字符

              [:cntrl:]   任意的控制字符

              [:graph:]  任意的圖形字符

              [:xdigit:] 任意的十六進制字符


次數限定

              *            匹配前面出現的字符任意次,包括0次

              \?            匹配前面出現的字符0次或1次

              \+           匹配前面出現的字符1次以上,包括1次

              \{n\}       匹配前面出現的字符n次,且只能爲n次.

              \{n,\}      匹配前面出現的字符n次以上, 包括n次

              \{2,5\}    匹配前面出現的字符 2 - 5 次,閉區間.

              \{,n\}      匹配前面出現的字符n次以上.

 

位置限定

              ^                   行首錨定

              $                   行尾錨定

                                          ^$空行         ^[[:space:]]*$ 顯示非空的空白行

              \<或 \b        詞首錨定

              \>或 \b        詞尾錨定

 

    分組

              \(\) 將括號中的字符當成一個整體

                     \(ro\)\{2,\}

                            匹配ro出現最少2次

後向引用

       後向引用,與分組配合使用使用\1;\2表示之前括號中匹配到的內容.即字符串而非模式.\1,\2表示的順序是(出現的順序,\1\,2表示的內容是(與之對應的)中匹配的內容.


\|

              匹配|左邊的模式或匹配右邊的模式












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章