正則表達式學習筆記

正則表達式 一、 正則表達式的概念

若是咱們對特定的某個字符操做的話,相對來講很簡單,好比tom,mary。若是我須要操做的這些字符,他們不是具體的某些字符,好比第一個字符是字母,第二個是數字,第三個是特殊字符等。在咱們現實生活中,咱們可使用一些特殊的字符表示,好比△字母,○表示數字,表示特殊字符。git


二、Grep的基本用法正則表達式

Grep也支持正則表達式,由於grep比較簡單,因此咱們就用grep來讓你們理解什麼是正則表達式。ide

Grep的做用是用來過濾含有特定字符的行。spa

用法:grep 關鍵字 file3d

wKioL1PqzeaiYBvEAABZAfSBlAk603.jpg

由於咱們如今過濾的是比較簡單的一個關鍵字。但若是說我要過濾一些特定字符的文件該如何完成?blog

咱們能夠這樣來作:grep △○ file get

紙上能夠這樣寫,可是計算機並不識別這些符號△○,因此就引入元字符的概念。it


三、正則表達式元字符:io

文件aa內容:class

wKiom1PqzVKCuMErAABX9V6_rz4470.jpg


^ 表示行開頭,下圖表示匹配以tom開頭的行

wKiom1Pqzb3T_bJWAABAGI6nw2I251.jpg


$ 表示行尾,下圖表示匹配以tom結尾的行

wKiom1PqzevTC9b8AAA7ZO7A-ok016.jpg


. 表示單個字符,能夠匹配除了換行符以外的全部字符。下圖表示匹配包含tom及後面的任意三個字符的行:

wKioL1Pqz0PxazCFAAA_U_Vco9U542.jpg


* 表示其前面的字符能夠出現任意次,包括0

wKiom1Pqzm3SCTOHAABLbDkrLyI670.jpg


+ 表示其前面的字符至少要出現一次:

wKiom1Pqzq-CSbMdAABCeXK_x8o998.jpg

這個命令裏面使用了-E選項,意思是使用擴展的grep,由於grep所能使用的元字符有限。


元字符*+都是貪婪型的,即最長匹配。見下圖:

wKioL1Pq0BSw1N3LAAAqdEKCeLM378.jpg


有時候咱們須要最短匹配,又叫懶惰型匹配。匹配時只要在*後面加?便可。

wKiom1Pqzy_RdgQ9AAAnvZYY9GU859.jpg


表示其前面的字符能夠有,也能夠沒有。

wKiom1Pqz2CzDTBzAAAp1atgmZI600.jpg

注意:grep不支持+? 這些元字符,若是要使用,須要擴展的grep(egrepgrep -E)

 

[] 表示匹配一個字符,出如今[]裏面的字符都是「或」的關係。

wKiom1Pqz53Dk5KFAAAxR21FDa0929.jpg


若是是出如今[]外面的話,表示開頭的意思,若是出如今[]裏面的話,表示否認的意思。

wKioL1Pq0PqDb2ZHAABE_vjYJLg202.jpg


剛纔^$,表示匹配行的開頭和結尾,若是要匹配單詞的開頭,要使用:\<

wKiom1Pq0BTAP3xaAAAxR6TGlOM495.jpg


\> 表示匹配單詞的結尾:

wKiom1Pq0EaR3yf6AAA5hgQ3pQA572.jpg


\btomb\ 表示只匹配單詞爲tom的行:

wKiom1Pq0HPyaEUEAAAox-F5sC4806.jpg


正則表達式中,也能夠作標籤,若是匹配模式中給某一部分作了一個標籤,咱們在後面就能夠直接引用他。若是咱們想對某一部分作標籤的話,只要使用\(\)括起來就能夠了,引用就使用\nn表示一個數字)。好比第一個被\(\)引發來的部分,引用就使用\1

wKioL1Pq0b2yxTZAAAAxp91LrnQ185.jpg


\{n\} 表示匹配其前面的字符n次,以下圖:

wKioL1Pq0e3xiZOMAABG6Y-S-lo048.jpg


\{n,\} 表示匹配其前面的字符至少n次,以下圖:

wKioL1Pq0i6RJ1ntAABL53kj4YI408.jpg


\{n,m\} 表示匹配其前面的字符至少n次,至多m次,以下圖:

wKiom1Pq0UmCkZQiAABLY1ZV288374.jpg


[0-9] 表示匹配數字

wKiom1Pq0XXDo2_DAAAkrxC5HYY192.jpg


\d 也能夠表示匹配數字:

wKioL1Pq0rPiP8JOAAAgstzdJVM033.jpg


\D 表示匹配非數字

\s 表示空格或tab   

\S 表示不能是空格或tab

\w 表示任意字符(大小寫字母、數字、下劃線)

\W 表示不能是字母、數字和下劃線

 

正則表達式也支持國際字符:

[[:digit:]] 表示數字

wKioL1Pq0u_jm2r3AAAqFJjbfMo269.jpg

[[:alpha:]] 表示字母,包括大小寫

 

[[:upper:]] 表示大寫字母

 

[[:lower:]] 表示小寫字母

相關文章
相關標籤/搜索