正則表達式基礎 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中
| #表示“或”,匹配一組可選的字符