一、什麼是正規表示式
三、grep的一些高階引數
eg:用dmesg列出核心資訊,用grep找出內含eth的那行。
四、基礎正規表示式字元(例子見下文)
1、待查詢的字串(word)在行首
re字元:^word
範例 :查詢行首為#開始的那一行,並列出行號(grep 後帶 -n 的作用)
命令 :grep -n '^#' regular_express.txt
2、待查詢的字串(word)在行尾
re字元:word$
範例 :將行尾為!的那一行列印出來,並列出行號
命令 :grep -n '!$' regular_express.txt
3、代表一定有乙個任意字元的字元
re字元:.
範例 :查詢的字串可以是(eve)(eae)
(eee)
(e e),但不能有(ee)!即e與e中間一定「有且僅有」乙個字元,而空格也是字元
命令 :grep -n 'e.e' regular_express.txt
4、轉義字元,將特殊符號(比如^ $ . \ * [ ]
等等)的特殊意義去除
re字元:\
範例 :查詢含有單引號'的那一行
命令 :grep -n '\'' regular_express.txt #注意\後面是兩個單引號,而非乙個雙引號
5、重複零個到無窮多個的前乙個
字元re字元:*
範例 :找出含有(es)(ess)
(esss)等的字串,注意,因為*可以是0個,所以 es 也是符合待查詢字串。另外,因為 * 為重複「前乙個re字元」的符號,因此,在*之前必須緊接著乙個re字元。例如任意字元則為".*
"(注意星號前面是乙個英文句號,因為英文句號代表「有且僅有乙個任意字元」)。
命令 :grep -n 'ess*' regular_express.txt #
因為*可以是0個,所以 es 也是符合待查詢字串
6、從字元集合的re字元裡面找出想要選取的字元
re字元:[list]
範例:查詢含有(gl)或(gd)的那一行,需要特別留意的是,在當中代表乙個
待查詢的字元,例如"a[afl]y"代表查詢的字串可以是aay、afy、aly,即[afl]代表的是a或f或l的意思。
命令 :grep -n 'g[ld]' regular_express.txt
7、從字元集合的re字元裡面找出想要選取的字元範圍
re字元:[n1-n2]
範例:查詢含有任意數字的那一行。需要特別注意的是,在字元集合[ ]中的減號-是有特殊意義的,它代表兩個字元之間的所有連續字元。但這個連續與否與ascii編碼有關,因此,你的編 碼需要設定正確(在bash當中,需要確定lang與language的變數是否正確)!例如所有大寫字元則為[a-z]。
命令 :grep -n '[0-9]' regular_express.txt #
查詢含有任意數字的那一行
grep -n '[a-z]' regular_express.txt #
查詢含有任意大寫字母的那一行
8、從字元集合的re字元裡面找出不要的字串或範圍
re字元:[^list]
範例 :查詢的字串可以是(oog)(ood)但不能是(oot),那個^在[ ]內
代表的意義是」反向選擇「的意思。例如,我不要大寫字母,則為[^a-z]。但是,需要特別注意的是,如果以 grep -n [^a-z] regular_express.txt 來查詢,卻發現該檔案內的所有行都被列出,為什麼?因為這個[^a-z]是」非大寫字元「的意思,因為每一行均有非大寫字母。
命令 :grep -n 'oo[^t]' regular_express.txt
9、連續n到m個的前乙個
re字元,若為\則是連續n個的前乙個re字元,若為\則是連續n個以上的前乙個re字元
re字元:\
範例 :在g與g之間有2個到3個的o存在的字串,即(goog)(gooog)
命令 :grep -n 'go\g' regular_express.txt
五、基礎正規表示式練習
我們用例題感受理解一下正規表示式。
例題1、查詢特定字串
不論大小寫的「the」這個字串
但是,不想要前面有g的話,可以利用在集合字元的反向選擇[^]來完成:
可以注意到,
那麼行尾呢?查詢
因為
查詢字串開頭結尾都是g的:
正規表示式基礎用法
正規表示式 regular expression 描述了一種字串匹配的模式 pattern 可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串等。字元含義示例 匹配任意長度的字串 匹配長度為1的字串 匹配除換行符以外的任意字元 匹配字串 一行 的開始 匹配字串 ...
正規表示式基礎用法
參考文件 正規表示式必知必會 ben forta著 楊濤譯 一 正規表示式用途 搜尋和替換 正規表示式是用來匹配和處理文字的字串 二 元字元分為兩種,一種匹配文字的 例如.一種是正規表示式語法所要求的 例如 這些元字元要匹配自己本事需要轉義 空白元字元 貪婪型 元字元,進行匹配時是 多多益善而不是適...
常見正規表示式字元用法
元字元 描述將下乙個字元標記符 或乙個向後引用 或乙個八進位制轉義符。例如,n 匹配 n。n 匹配換行符。序列 匹配 而 則匹配 即相當於多種程式語言中都有的 轉義字元 的概念。匹配輸入字串的開始位置。如果設定了regexp物件的multiline屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的...