- 基本正則表達式:
- 字符匹配:
- 匹配任意單個字符:.
- 匹配指定范圍內的任意單個字符:[](注意匹配規則,匹配上的字符不再做匹配,括號內如果有多個單個字符或者比如[a0-9c],表示匹配a或者0-9或者c),括號內輸入點號[.]就是普通字符點
- 匹配指定范圍外的任意單個字符:[^]
- [:alnum:] 字母和數字
- [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
- [:lower:] 小寫字母 [:upper:] 大寫字母
- [:blank:] 空白字符(空格和制表符)
- [:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
- [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
- [:digit:] 十進制數字 [:xdigit:]十六進制數字
- [:graph:] 可打印的非空白字符
- [:print:] 可打印字符
- [:punct:] 標點符號
- ?匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
- 匹配其前面的字符0或多次: ?* 如:a*b 表示a出現任意次后緊跟b
- 匹配任意長度的字符: ? .* 表示 . 出現任意次
- 匹配其前面的字符一次或0次:\? 需要加“”或‘’
- 匹配其前面的字符1次或多次:\+ 前面的字符至少出現1次
- 匹配其前面的字符m次:\{m\}
- 匹配其前面的字符至少m次,最多n次:\{m,n\} \{0,n\}最多n次;\{m,\}至少m次
- ?位置錨定:定位出現的位置
- 錨定行首,此元字符后面的一個或多個字符必須出現在行首:^
- 錨定行尾,此字符前面的一個或多個字符必須出現在行尾:$
- ^PATTERN$:用模式來匹配整行
- ^$ 或 ^[[:space:]]*$ :空白行
- 錨定單詞首部,表示\<后的字符必須是單詞的開頭(單詞匹配時只有字母、數字和下劃線算作單詞的一部分,其他符號都不是)首部出現:\<或者\b
- 錨定詞尾,其后面的任意字符必須作為單詞尾部出現:\>或者\b
- 精確匹配單詞:\<root\>
- 匹配整行,不能匹配單詞了:\<.*\>
- 例:找出/etc/passwd文件中的兩位數或三位數
- # grep “\<[0-9]\{2,3\}\>”/etc/passwd如果不錨定詞首詞尾會出現3個數字以上的行
- 分組:\(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(ab\)* ?表示ab看作整體,ab可以出現任意次
- 注意:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄于內部的變量中,這些變量為后向引用
- \1:引用第一個左括號以及與之對應的右括號所包括的所有內容
- \2:引用第2個左括號以及與之對應的右括號所包括的所有內容
- \3:引用第3個左括號以及與之對應的右括號所包括的所有內容
- 字符匹配:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96521