1、什麼是正規表示式
正規表示式就是處理字串的方法,它是以行為單位來進行字串的處理行為,正規表示式通過一些特殊的符號的輔助,可以讓使用者輕易達到查詢、刪除、替換某特定字串的處理程式。正規表示式基本上是一種「表示法」,只要工具程式支援這種表示法,那麼該工具程式就可以用來作為正規表示式的字串處理之用。常用的工具有vi、grep 、awk 及sed 等。
2、語系對正規表示式的影響
在使用正規表示式時,需要特別注意當時的環境的語系為何,否則可能會發現與別人的不相同的選取結果。通常用的語系設定是 「lang=c」
另外為了避免因為語系的不同英和數字的選取問題,我們需要記住以下一些常用的特殊符號
特殊符號
代表意義
[:alnum:]
代表英文大小寫及數字,即0-9、 a-z、a-z
[:alpha:]
代表英文大小寫字元,即 a-z,a-z
[:digit:]
代表數字 即 0-9
[:lower:]
代表小寫字母 a-z
[:upper:]
代表大寫字母 a-z
備註:查詢字串的常用操作示例
//查詢在文字中不包含字元的操作使用-v 其中n 表示顯示
grep -vn
'the' regular_express.txt
//忽略大小寫的操作
grep -in
'the' regular_express.txt
3、基礎正規表示式常用操作總結
字元描述示例\
將下乙個字元標記為乙個特殊字元、或乙個原義字元
{} 因為的符號在shell中是有特殊意義的,必須要使用\的轉意它
^通常情況下表示行首,但是如果^出現在中則表示『反向選擇』
^[a-z]表示以小寫字母開頭的行,^[^a-za-z] 表示不以字母開頭的行
.代表一定有乙個任意字元的字元
例如:grep -n 『e.e』 test.txt 可以匹配到exe ,eae等
$行尾符
google$ 表示以google 結尾的行
*匹配前乙個字元(前面的子表示式)零次或多次
例如,zo* 能匹配 「z」 以及 「zoo」。 * 等價於。
n 是乙個非負整數。匹配確定的 n 次
例如:』o』 不能匹配 「bob」 中的 『o』,但是能匹配 「food」 中的兩個 o。
n 是乙個非負整數。至少匹配n 次
例如:』o』 不能匹配 「bob」 中的 『o』,但能匹配 「foooood」 中的所有 o。』o』 等價於 『o+』。』o』 則等價於 『o*』。
m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次
例如: 「o」 將匹配 「fooooood」 中的前三個 o。』o』 等價於 『o?』。請注意在逗號和兩個數之間不能有空格。
4、擴充套件正規表示式常用操作總結
字元描述示例+
匹配前乙個字元(前面的子表示式)一次或多次
例如,』zo+』 能匹配 「zo」 以及 「zoo」,但不能匹配 「z」。+ 等價於 。
?匹配前面的子表示式零次或一次
例如,」do(es)?」 可以匹配 「do」 或 「does」 中的」do」 。? 等價於 。
|用或(or)的方式找出數個字串
例如:搜尋gd或good這兩個字串egrep -n 『gd|good』 test.txt
()找出群組字串
例如:搜尋(glad)或者(good)這兩個字串,因為g與d是重複的,所以,我就可以將la與oo列於()當中,並以
()+多個重群組的判別
例如:將axyzxyzxyzxyzc用echo叫出,然後再使用如下方法搜尋 egrep 『a(xyz)+c』 test.txt上面的例子意思是說,我要找開頭是a結尾是c,中間有乙個以上的「xyz」字串的意思。
備註:如果包含了擴充套件正規表示式中的符號,則需要使用egrep
Linux學習(六) 正規表示式
書上說,正規表示式很重要,但是本人才開始學習,也不知道,到底有什麼重要的作用。在這裡記錄只是為了以後方便查閱。這裡介紹的是用於編寫shell指令碼的正規表示式。首先,我們要先認識基礎的正規表示式的重要的特殊字元的含義。如下表 re字元 含義 舉例 word 表示行首,待搜尋的word字串在行首 gr...
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 學習總結
1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...