符號 意義
「*」——————用於匹配前面乙個普通字元的0次或多次重複;
「.」——————用於匹配任意乙個字元;
「^」——————用於匹配首行,表示行首的字元時「^」字元後的的那個字元(或字串);
「$」——————用於匹配首尾,$符號放在匹配字元之後,與「^」符號的功能和用法都相反;
「」——————用於匹配字元集合,該符號支援窮舉方法列出字元集合的所以元素,也支援
使用「-」符號表示字集合範圍,表明字元集合範圍從「-」左邊字元開始,
到「-」右邊字元結束;
example-01:
窮舉方法列出字元集合:sudo find /etc/ -name *.conf | grep [abc]
用「-」符號表示字集合範圍: sudo find /etc/ -name *.conf | grep [a-d]
example-02:
sudo find /etc/ -name *.conf | grep [^a-d]
上面例子中的「^」表示取反的意思,不再是匹配行首字元的意思了;
「\」——————是轉義符,用於遮蔽乙個元字元的特殊意義,及以字面含義按字元來解釋「\」符號
後面的元字元;
example:
sudo find /etc/ -name *.conf | grep \.
上面例子中的「.」符號不再表示匹配任意乙個字元的意思,而僅僅表示字元本身。
「\」——————是精確匹配符號,該符號利用「\」符號遮蔽「<>」符號;
「\」——————系列符號與「*」類似,都是表示前乙個字元的重複。但是,「*」符號表示重複0次
或任意 次,而「\」系列符號可以指定重複的次數,
「\」系列符號包括以下三種形式。
1、\:匹配前面字元出現n次;
2、\:匹配前面字元至少出現n次;
3、\:匹配前面字元出現n到m次。
正規表示式
正規表示式和shell萬用字元一樣也包含許多特殊字元,除了這些特殊字元之外其餘的全是原義字元。
特殊字元
字元作用
^1.^在字串開頭時表示文字開頭
2.^在中的第乙個位置時表示否定,其他位置時是普通字元
$1.字元末尾
2.變數值獲取
.任意單個字元
括號中的任意乙個單個字元,特殊字元在中失去特殊含義,除了^和-在指定的位置時。
{}匹配特定的次數(重複)。在bash中還可以表示命令集合或者目錄分隔。
-在中非第乙個和最後乙個位置時表示範圍。具體的值和特定的語系有關。
?表示0個或一次(重複)
*任意多次重複(重複)。在bash中代表任意長度的任意字串。
+至少一次的重複(重複)
()分組符。在bash中表示子shell指定的命令。
|邏輯或。在bash中表示管道。
\特殊字元轉義符。
當我們在bash中傳遞包含元字元的正規表示式的時候,把特殊字元用單引號引起來至關重要,這樣可以阻止 shell 試圖展開它們。
下面就來解釋一下語系與正規表示式範圍的關係:
正規表示式是處理字串的表示方式,那麼對字元的排序有影響的語系配置就會對正規表示式產生影響。
舉例來說,英文和數字的編碼順序在en_us.utf8及 c 這兩種語系的輸出結果分別如下:
lang=c:0 1 2 3 4 ... a b c d ... z a b c d ...z
lang=en_us.utf8:0 1 2 3 4 ... a a b b c c d d ... z z
從上面可以發現不同的語系中字元的排序是不一樣的。如果你想要獲取大寫的字元而使用[a-z] 時,會發現lang=c(或者posix)時是連續的大寫字元。
但是如果使用en_us.utf8時,會發現會取出除了小寫a以外的所有字母。因為排序的順序是【a b b c c d d ... z z】。
所以,使用這則表示式時,需要特別留意當時環境的語境是什麼,否則會發現獲取的結果和別人是不一樣的。
基本正規表示式
匹配除了換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 字母大寫即反義 不匹配 s 匹配任意的空白符 字母大寫即反義 不匹配 d 匹配數字 字母大寫即反義 不匹配 b 匹配單詞的開始或結束 字母大寫即反義 不匹配 匹配字串的開始 匹配字串的結束 x 匹配除了x以外的任意字元 aeiou 匹配...
正規表示式 基本
字元 d任意乙個數字,0 9中任意乙個 d任意非數字 w任意乙個字母 下劃線 數字。即 a z a z 0 9 w表示除 0 9a za z 之外的字元 s匹配任何空白字元,包括空格 製表符 換頁符等等。等價於 f n r t v s匹配任何非空白字元。匹配任意乙個字元 如要匹配包括 n在內的所有字...
基本的正規表示式
附件一 正規表示式語法 字元 說明 將下一字元標記為特殊字元 文字 反向引用或八進位制轉義符。例如,n 匹配字元 n n 匹配換行符。序列 匹配 匹配 匹配輸入字串開始的位置。如果設定了 regexp 物件的 multiline 屬性,還會與 n 或 r 之後的位置匹配。匹配輸入字串結尾的位置。如果...