正則表示式 入門
檢索文字檔案:Egrep
文字檢索是正則表示式最簡單的應用之一 ——許多文字編輯器和文書處理軟體都提供了正則表示式檢索功能。最簡單的就是egrep。在指定了正則表示式和需要檢索的檔案之後,egrep會嘗試用正則表示式來匹配每個檔案的每一行,並顯示能夠匹配的行。
Egrep元字元
行的起始和結束
脫字元號 ‘^’和美元符號‘$’。在檢查一行文字時,‘^’代表一行的開始,‘$’代表結束。正則表示式‘cat’匹配的是一行文字中任意位置的 c+a+t,但是‘^cat’只匹配行首的c+a+t —‘^’用來把匹配文字“錨定”在一行的開頭。The same as,‘cat$’只尋找行末的c+a+t,example the line end of scat.。
最好養成按照字元理解正則表示式的習慣。
例如,不要這樣理解:‘^cat’匹配以cat開頭的行
而應該這樣理解:‘^cat’匹配的是以c作為一行的第一個字元,緊接一個a,緊接一個t的文字。
分析‘^cat$’、‘^$’和‘^’ ‘^cat$’ 文字意義:匹配的條件是,行開頭,然後是字母c+a+t,然後是行末尾。 應用意義:只包含cat的行—沒有多餘的單詞、空白字元……只有‘cat’。 ‘^$’ 文字意義:匹配的條件是,行開頭,然後就是結尾。 應用意義:空行(沒有任何字元,包括空白字元) ‘^’ 文字意義:匹配條件是行的開頭。 應用意義:無意義!因為每一行都有開頭,所以每一行都匹配—空行也不例外。
Egrep字元組
匹配若干字元之一
假設要搜尋一個單詞“grey”,但又不確定它是不是寫作“gray”,就可以使用正則表示式結構體 [···] 。它允許使用者列出在某處希望匹配的字元,通常被稱作字元組。e 匹配字元 e ,a 匹配字元 a ,而正則表示式 [ea] 能匹配 a 或者 e 。所以 gr[ea]y 的意思是:先找到g,跟著是一個r,然後是一個 a 或者 e ,最後是一個y。
在一個字元組中可以列舉任意多個字元。例如 [123456] 匹配1到6中的任意一個數字。這個字元組可以作為<H[123456]> 的一部分,用來匹配 <H1>、<H2>、<H3> 等等。在搜尋HTML程式碼的標頭檔案時很有用。
在字元組內部,字元組元字元 ‘-’ (連字元)表示一個範圍:<H[1-6]>與<H[123456]>是完全一樣的。[0-9]和[a-z]是常用的匹配數字和小寫字母的簡便方式。混合的方式也被允許,例如 [0123456789abcdefABCDEF]可以寫作[0-9a-fA-F](或者也可以寫作[A-Fa-f0-9] 順序無所謂)。這三個正則表示式非常適合用於處理十六進位制數字。
排除型字元組
用 [^···] 取代 [^···] ,這個字元組就會匹配任何未列出的字元。例如,[^1-6] 匹配除了1到6以外的任何字元。這個字元組中開頭的 ^ 表示“排除”,所以這裡列出的不是希望匹配的字元,而是不希望匹配的字元。