Ubuntu基本的正規表示式元字元集合及意義

2021-07-03 13:07:58 字數 2035 閱讀 7485

符號                                                意義

「*」——————用於匹配前面乙個普通字元的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 之後的位置匹配。匹配輸入字串結尾的位置。如果...