何為正則表達式?

何為正則表達式

 

UNIX/Linux上有許多文本處理工具,其中最主要最重要要屬grepsed、和awk三種了,被稱為文本處理三劍客。但是要完全認識他們的各種功能,則必須現在正則表達式及其元字符的使用上打好基礎。

什么是正則表達式?正則表達式(regular expressionRE)是一種字符模式,用于在查找過程中匹配指定的字符。正則表達式的有趣之處在于可以用特殊的元字符來控制他們,以實現強大的匹配功能。

正則表達式元字符

元字符是這樣一類字符,他們表達的不是字面本身的含義,而是代表其它的特定的含義,以此來進行模式匹配界定。

元字符有兩類:shell元字符和正則表達式元字符。

Shell元字符由shell來解析。例如,當用戶輸入命令“rm *”時,命令中的星號“*”就是一個shell元字符,稱為通配符。Shell將其解析為匹配當前工作目錄下的所有文件名

正則表達式的元字符則是由各種執行模式匹配的程序來解析,譬如vigrep、sed、和awk。可以用元字符來定位在行首行尾出現的單詞,也可以用元字符指定任意字符或某一組字符,從而對其執行查找及增刪替換等操作。例如,下面的這條sed命令: 

何為正則表達式? 

表示把行首hello單詞替換成大寫的Hello。拖字符”^”代表在行首,”\>”表示單詞的結束。

        有5種基本的元字符可以被UNIX/Linux的所有模式匹配工具識別。表1-1列出了可以在所有版本的vi、exgrep、egrepsedawk中使用的元字符,其他的則可能適用于部分工具中。

何為正則表達式? 

                   表1-1  正則表達式元字符

何為正則表達式?

                                         表 1-2

下面我們將舉例來講解每個元字符,假定在如下文字中查找。Grep命令能查找被模式匹配到的行并顯示整行內容。

何為正則表達式? 

基本正則表達式元字符

1行首定位符”^”

何為正則表達式? 

拖字符^查找行首開頭的為love的行。 

2、行尾定位符”$

何為正則表達式?

美元$為行尾定位符,此行中day位于行尾,后面緊跟換行符。 

3、任意單個字符”.”

何為正則表達式? 

句號(.)匹配除換行符的任意單個字符。

4、零個或多個前字符”*”

何為正則表達式? 

星號(*)匹配零個或多個前字符,它就像和前面的字符粘在一起一樣,只控制這個字符.匹配次數包括0,如上例中的lv。

5匹配一組字符的任意一個”[]”

何為正則表達式? 

6一個范圍中的一個字符”[ – ]”

何為正則表達式? 

方括號中的連字符匹配某一范圍中的一個字符,上例中匹配li后接一個a-z的任意字符,由于匹配的是ASCII值的范圍,所以不能寫成[z-a]。

7不在組內的字符”[^ ]”

何為正則表達式? 

方括號內的拖字符是一個否定元字符。上例中匹配ove后加一個不是az,AZ,且不是0-9的字符,那就可能是空格,標符號如?了。

以上為正則表達式的基本元字符,他們可以組合起來成為更復雜的表達式。

其他表達式元字符

下面的元字符不一定適用于所有使用正則表達式的工具,但可用于vi,vim編輯器,及某些版本的sedgrep。此外還有一種被egrepawk所使用的擴張正則表達式。

1、詞首定位符\<和詞尾定位符\>

何為正則表達式? 

上例中查找每一行的單詞love.單詞的存在形式可以是:以空格開頭、由標點終結、開始于行首、結束語行尾等,所以字母和數字都是可以屬于單詞的。

2”\( …\)”記錄模式

何為正則表達式? 

上例中第一個被”\(\)”記錄的標記為\1,第二個被”\(\)”記錄的標記為\2,以此類推。如果把他們互相替換,則標簽所代表的被記錄的內容也會交換位置。

3、模式的重復”\{m,n\}”,表示其前面的字符最少重復m次,最多重復n次。

何為正則表達式? 

 

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

(1)
beyondbeyond
上一篇 2016-08-16 13:59
下一篇 2016-08-16 13:59

相關推薦

  • 馬哥教育網絡班21期第6周課程練習

    一、vim編輯器的使用 二、練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@www ~]# cp /etc/rc.d/rc.sysinit /tmp [root@www ~]# l…

    Linux干貨 2016-08-15
  • linux系統及簡單使用

    簡介:CentOS(Community Enterprise Operating System)社區企業操作系統,安全和穩定性較好,有優秀的社區支持。   Linux系統的原則: 1、由單一目的的較小的程序程序組成 2、一切皆文件 3、避免捕獲用戶接口 4、配置文件保存在文本中 5、鏈接程序完成復雜的功能   Linux系統安裝: 英文安…

    Linux干貨 2017-07-15
  • 文本處理三劍客之grep

    文本處理三劍客之grep 正則表達式(regex) 文本處理工具 grep egrep 試驗環境:CentOS 7.2 正則表達式 Linux的哲學之一“一切皆文件”,學習Linux應得掌握其基本的文本處理工具,這些工具主要包括: 文件內容:less和cat 文件截?。篽ead和tail 文件抽取:cut 關鍵字搜索:grep 正則表達式是計算機科…

    Linux干貨 2016-08-07
  • ansible的入門使用手冊

    ansible1

    2018-01-15
  • free / buffer與cache

           前幾天看到有些伙伴傻傻分不清楚buffer與cache的用處,后來發現我也不能很清楚的說出來buffer與cache在不同的地方有什么不同之處,這里就總結了一些關于buffer于cache的區別,如有不完善的地方,請大家指出來。        說到buffer與ca…

    2017-07-17
  • rpm命令詳解及和yum之間的關系

        RPM 全名是“ RedHat Package Manager ”簡稱則為 RPM 顧名思義,當初這個軟件管理的機制是由 Red Hat 這家公司發展出來的。 RPM 是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的 Linux 系統的一套管理機制。    &nbsp…

    Linux干貨 2016-08-21
欧美性久久久久