歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux下Shell編程——正則表達式基礎與擴展

Linux下Shell編程——正則表達式基礎與擴展

日期:2017/3/1 9:56:24   编辑:SHELL編程
正則表達式基礎

Linux Shell以一串字符作為表達式向系統傳達意思。元字符(Metacharacters)是用來闡釋字符表達式意義的字符,簡言之,元字符就是描述字符的字符,它用於對字符表達式的內容、轉換及各種操作信息進行描述。正則表達式是由一串字符和元字符構成的字符串,簡稱RE(Regular Expression)。正則表達式的主要功能是文本查詢和字符串操作,它可以匹配文本的一個字符或字符集合。

正則表達式完成了數據的過濾,將不滿足正則表達式定義的數據拒絕掉,剩下與正則表達式匹配的數據。

正則表達式的基本元素包括普通字符和元字符。POSIX標准將正則表達式分為兩類:基本的正則表達式和擴展的正則表達式,大部分Linux應用和工具僅支持基本的正則表達式。


基本的正則表達式元字符集合及其意義:

* #0個或多個在*字符之前的那個普通字符

. #匹配任意字符

^ #匹配行首,或後面字符的非

$ #匹配行尾

[] #匹配字符集合

\ #轉義符,屏蔽一個元字符的特殊意義

\<\> #精確匹配符號

\{n\} #匹配前面字符出現n次

\{n,\} #匹配前面字符至少出現n次

\{n,m\} #匹配前面字符出現n~m次



空行的表示方法: ^$

匹配只包含一個字符的行: ^.$



Linux系統對大小寫是敏感的,並且支持字母排序,因此,Linux中有大寫字母序列和小寫字母序列,兩者是分開的。

例:匹配字母

[a-z] #所有小寫字母

[A-Z] #所有大寫字母

[b-p] #小寫字母b~p



“^”符號表示匹配行首,但是,“^”符號放到”[]”符號中就不再表示匹配行首了,而是表示取反符號。如:[^b-p]表示匹配不在b~p范圍內的字符。

\<the\>正則表達式精確匹配the這個單詞,而不匹配包含the字符的單詞,如then。


正則表達式的擴展

除了正則表達式的元字符之外,awk和Perl等Linux工具還支持正則表達式擴展出來的一些元字符。

擴展的正則表達式元字符及其意義:

? #匹配0個或1個在其之前的那個普通字符

+ #匹配1個或多個在其之前的那個普通字符

() #表示一個字符集合或用在expr中

| #表示“或”,匹配一組可選的字符
Copyright © Linux教程網 All Rights Reserved