歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux初學習之正則表達式和通配符

Linux初學習之正則表達式和通配符

日期:2017/2/28 14:52:30   编辑:Linux教程

一、正則表達式:

元字符是用來闡釋字符表達式意義的字符,簡言之,就是用來描述字符的字符。

正則表達式RE(Regular Expression)是由一串字符和元字符構成的字符串。

正則表達式的主要功能是文本查詢和字符串操作,它可以匹配文本的一個字符或字符集合。實際上正則表達式完成了數據的過濾,將不滿足正則表達式定義的數據拒絕掉,剩下與正則表達式匹配的數據。

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

符號 意義 * 0個或多個在*字符之前的那個普通字符 . 匹配任意字符 ^ 匹配行首,或後面字符的非 $ 匹配行尾 [] 匹配字符集合 \ 轉義符,屏蔽一個元字符的特殊意義 \<\> 精確匹配符號 \{n\} 匹配前面字符出現n次 P.43 \{n,\} 匹配前面字符至少出現n次 \{n,m\} 匹配前面字符出現n~m次

1.“*”符號

zha*ng :“*”前面的普通字符是a,就表示匹配a字符0次或多次,如:zhng、zhang、zhaaaang

(根據測試可以不包括前面的字符,即匹配0次)

2.匹配空行

匹配行首的^和匹配行尾的$組合起來“^$”可以用來匹配空行,如果需要匹配只包含一個字符的行,可以用“^.$”

3."[]"符號

匹配字符集合,支持窮舉方法列出字符集合的所有元素,也支持使用“-”符號表示字符集合范圍。

[12345] 等價於 [1-5]

我們知道“^”符號表示匹配行首,但是,“^”符號放到“[]”符號中就不再表示匹配行首了,而是表示取反符號。

[^b-d] :表示不再b~d范圍內的字符

[A-Za-z] [A-Za-z]* :匹配任意英文單詞

二、正則表達式的擴展:

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

符號 意義 ? 匹配0個或一個在其之前的那個普通字符 + 匹配一個或多個在其之前的那個普通字符 () 表示一個字符集合或用在expr中 | 表示“或”,匹配一組可選的字符

1.“?”符號

(根據測試可以不包括前面的字符,即匹配0次)

2."()"符號和“|”符號

"()"符號和“|”符號通常結合使用,表示一組可選字符的集合。

re(a|b|c)d 等價於 re[abc]d

"|"符號也可以表示多個正則表達式的“或”關系。

grep -E “zha?ng|zhi” 文件

三、通配符:

bash shell本身不支持正則表達式,使用正則表達式的是shell命令和工具,如grep,sed,awk。

bash shell可以使用正則表達式中的一些元字符實現通配(Globbing)功能。

通配是把一個包含通配符的非具體文件名擴展存儲在計算機,服務器或者網絡上的一批具體文件名的過程。(可以看出通配主要應用匹配文件名上,而正則主要應用於字符串上)

最常用的通配符包括正則表達式元字符:?、*、[]、{}、^等。

符號 意義 * 任意位的任意字符 ? 一個任意字符 ^ 取反

1.“{}”符號

表示一組表達式的集合。如:{[a-h]*.awk ,a?.txt}

學習小結,如有錯誤,望告知!共同學習,共同進步……

Copyright © Linux教程網 All Rights Reserved