如何使用正則表達式

正則表達式(Regular Expression)就是使用簡單的字符按照預先設定的規則來完成復雜的功能,說白了,正則表達式是一種字符串的匹配方式,就是用預先設定好的規則來描述我們想要表達的內容,它是由普通字符以及元字符組成的字符串,其中元字符不表示本身的意義,而是用于表達控制或通配等功能。

為什么要用這個東西那,我想,每一個學習計算機的人都應該明白,計算機就是我們用數字來描述這個現實的世界,而如何使用數字來描述這個現實世界那,就必須用到字符,正則表達式之所以無比重要就是因為可以通過它來找到我們想要的東西,我們知道,對于linux系統管理來說,最重要的工作就是通過修改配置文件來實現系統管理工作的,而面對浩瀚的配置文件,如何能找到我們想要修改的內容那,有了正則表達式,就會大大減輕我們的工作量,下面就讓我介紹一下linux文本搜索工具。

Linux下的文本搜索工具主要就三個:grep、egrep、fgrep;這三個工具主要功能就是根據用戶指定的文本模式,這個文本模式是由正則表達式元字符以及正常字符組合而成,對目標文件進行逐行搜索,然后顯示能匹配到的行。

grep命令使用方法:

    grep  [OPTION]  PATTERN   [FILE ….]

重要選項介紹:

    –color:用來指定匹配內容的顏色,主要參數有:auto; alwaysnever;

例如:grep  –color=auto  “root”  /etc/passwd

color.png

       -v :反向顯示

       -o :只顯示能匹配到的內容而不顯示能匹配到這一行的其他內容

       -i : 搜索時不區分大小寫

       -E:使用擴展的正則表達式

       -A#:被模式匹配到的行的下#行也一起顯示

   -B#:被模式匹配到的行的前#行也一起顯示

   -C#:被模式匹配到的行的前后#行也一起顯示

 

以上就是grep命令的常用常見,接下來我們詳細介紹grep搜索的模式,也就是正則表達式

  1. 字符匹配

              .  :匹配任意的單個字符

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

              [[:digit:]][0-9]:表示0-9范圍內任意單個數字

              [[:lower:]][a-z]表示a-z范圍內任意單個字母

              [[:upper:]][A-Z]:表示A-Z范圍內任意單個字母

              [[:alnum:]][0-9a-zA-Z]:表示任意大小寫字母或數字

              [[:alpha:]][a-zA-Z]:表示任意大小寫字母

              [[:space:]]表示任意空格

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

  2、次數匹配:在期望匹配字符的后面提供一個控制符,用來表達匹配其前面字符指定的次數。

*    :表示任意長度,0次、1次、或多次

\?   :匹配其前面的字符可以1次或0次,也就是說前面字符可有可無

\+   :1次或多次,表示左側字符至少出現一次

\{n\}   :n次表示其左側字符精確出現n

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

\{0,n\}   :至多n

\{m,0\}   :至多m

 3、位置錨定

                ^  :用來錨定行首

                $  :用來錨定行尾

 4、單詞錨定:有非特殊字符組成的連續字符串

                \<\b  :錨定詞首

                \>\b  :錨定詞尾

                 \<PATTERN\>   :匹配PATTERN能匹配到的整個單詞

 5、分組:在分組中的模式在某次具體的匹配過程中所匹配的字符,可以被grep記憶,保存于內置的變量中,這些變量是(\1、\2、…..\9)因此還可以被用來引用,其中(\1)用來引用自左而右由第一個左括號以及與之對應的右括號中模式所匹配到的內容,其中(\2)用來引用自左而右由第二個左括號以及與之對應的右括號中模式所匹配到的內容;

例如創建一下文本文件

QQ截圖20151024142601.png

使用使用\1引用前一個模式總所匹配到的內容

QQ截圖20151024142646.png

 

 

 接下來我們詳細介紹egrep搜索的模式,也就是擴展正則表達式

    egrep命令使用方法:

    egrep  [OPTION]  PATTERN   [FILE ….]

 

 1、字符匹配

             .  :匹配任意的單個字符

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

             [[:digit:]][0-9]:表示0-9范圍內任意單個數字

             [[:lower:]][a-z]:表示a-z范圍內任意單個字母

            [[:upper:]][A-Z]:表示A-Z范圍內任意單個字母

            [[:alnum:]][0-9a-zA-Z]:表示任意大小寫字母或數字

            [[:alpha:]][a-zA-Z]:表示任意大小寫字母

      [[:space:]]表示任意空格

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

 2、次數匹配:在期望匹配字符的后面提供一個控制符,用來表達匹配其前面字符指定的次數。

*    :表示任意長度,0次、1次、或多次

?   :匹配其前面的字符可以1次或0次,也就是說前面字符可有可無

+   :1次或多次,表示左側字符至少出現一次

{n}   :n次表示其左側字符精確出現n

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

{0,n}   :至多n

{m,0}   :至多m

 3、位置錨定

                ^  :用來錨定行首

                $  :用來錨定行尾

 4、單詞錨定:有非特殊字符組成的連續字符串

               \<\b  :錨定詞首

               \>\b  :錨定詞尾

               \<PATTERN\>   :匹配PATTERN能匹配到的整個單詞

 5、分組:在分組中的模式在某次具體的匹配過程中所匹配的字符,可以被grep記憶,保存于內置的變量中,這些變量是(\1\2、…..\9)因此還可以被用來引用,其中(\1)用來引用自左而右由第一個左括號以及與之對應的右括號中模式所匹配到的內容,其中(\2)用來引用自左而右由第二個左括號以及與之對應的右括號中模式所匹配到的內容;

 

fgrep表示匹配的模版都被看做是字符串,因此元字符都作為普通字符來處理,使用方法類似,因此不做詳細描述。

 

 正則表達式現在廣泛應用于Unix系統、Linux系統以及PHP、C#、Java等開發環境中,靈活的運用正則表達式可以極大的簡化日常工作,就好比每一個成為武林高手所必備的基本功,每一招每一式都需要勤加練習,這樣才能做到運用自如。

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

(0)
zhangzhang
上一篇 2015-10-27 23:14
下一篇 2015-10-27 23:18

相關推薦

  • N26_第四周

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@node1 skel]# cp -r /etc/skel/home/tuser1 [root@node1 skel]# chmod go-wrx/home/tuser1/   2、編輯/etc/grou…

    Linux干貨 2017-05-26
  • MAN 手冊各章節功能介紹及快捷鍵鍵位整理

    man手冊各章節功能介紹及快捷鍵鍵位整理 Linux系統提供了相對比較豐富的幫助手冊(man),man是manual的縮寫,是系統中提供相關條目參考信息的命令。 Ⅰ、man手冊分為多個section 使用手冊:壓縮格式的文件,有章節之分; 存儲位置/usr/share/man    man1,man2,man3,man4,man5,man…

    Linux干貨 2016-10-16
  • Linux文件管理&bash特性

    Linux上的文件管理命令 目錄管理命令: mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自動按需創建父目錄; -v: verbose,顯示詳細過程; -m MODE:直接給定權限; 注意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在; r…

    Linux干貨 2016-09-28
  • 說說web和http以及lamp/lnmp

    <span style="font-size: 24px;font-family: 宋體,SimSun">**說說web和http以及lamp/lnmp**</span> 說說web和http以及lamp/lnmp 在這篇文章當中你將看到如下內容: web與http的簡介,網頁的分類 度量網站流量的幾個術語——知道…

    2016-05-28
  • Linux 下openssl搭建一個CA

    CA : 證書頒發機構PKI : 公鑰基礎設施,公鑰基礎構架證書: 里面存放了用戶的各種信息,最核心的部分就是公鑰 誰來給CA頒發公鑰,解決方法是,CA自己給自己頒發公鑰 openssl 是一個強大的工具可以幫助我們來創建頒發證書,下面我們就來看下在linux下 opensssl 搭建一個CA,并實現管理 1、首先我們需要給CA生成一個私鑰  cd…

    2017-07-16
  • 馬哥教育網絡班21期+第4周作業

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

    Linux干貨 2016-08-02

評論列表(2條)

  • stanley
    stanley 2015-10-27 23:15

    內容很豐富,格式上有些亂失去了層次主次,不容易吸引用戶

  • Wlibang
    Wlibang 2015-12-06 09:22

    [[:lower:]]或[a-z]:表示a-z范圍內任意單個字母 前者精確匹配小寫字母,后者不區分大小寫

欧美性久久久久