歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux下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