shell學習2 正規表示式(一) 字元匹配

2021-10-01 02:59:46 字數 1585 閱讀 5112

正規表示式使用場景

測試字串內的模式

例如,資料驗證:測試輸入字串,以檢視字串內是否出現**號碼模式或信用卡號碼模式

替換文字

識別文件中的特定文字,完全刪除該文字或用其他文字替換它

基於模式匹配從字串中提取子字串

查詢文件內或輸入域內特定的文字

正規表示式詳細學習資料見鏈結

範圍表示法

用連字元-表示省略和簡寫

例如:[1234567abcdefghijklm]可寫成[1-7a-fg-m]

如果要匹配"a"、"-"、"z"這三個字元中的任意乙個字元不能寫成[a-z](表示小寫字元中的任意乙個字元),要寫成:[-az] 或 [az-] 或 [a-z],- 要麼放在開頭,要麼放在結尾,要麼轉義,不要讓引擎認為是範圍表示法

排除字元組

字元組的第一位 ^ (脫字元)表示求反。例如,[^abc] 表示乙個除"a"、「b」、"c"之外的任意乙個字元

常見字元組的簡寫

簡寫含義

\d[0-9],表示一位數字

\d[^0-9],表示除數字外的任意字元

\w[0-9a-za-z_],表示數字、大小寫字母及下劃線(單詞字元)

\w[^0-9a-za-z_],表示非單詞字元

\s[ \t\v\n\r\f],表示空白符(空格、水平製表符、垂直製表符、換行符、回車符、換頁符)

\s[^ \t\v\n\r\f],表示非空白符

.[^\n\r\u2028\u2029],萬用字元,表示幾乎任意字元,換行符、回車符、行分割符和段分隔符除外

如要匹配任意字元,可使用[\d\d]、[\w\w]、[\s\s]、[^]量詞

簡寫含義

表示至少出現m次

,表示出現m次

,表示出現或不出現

+,表示出現至少一次

*,表示出現任意次,有可能不出現

匹配與分支

/d/,表示數字連續出現2-5次,會匹配2位、3位、4位、5位連續數字。會盡可能多的匹配,為貪婪匹配;如果需要匹配盡可能少的位數需要在量詞後加惰性匹配

多選分支(p1|p2|p3),表示其中任意乙個模式,其中p1、p2、p3為子模式,|為管道符;分支結構預設為 惰性匹配

Shell學習 正規表示式

定位符 同時錨定開頭和結尾,做精確匹配 單一錨定開頭或結尾或者不錨定的,做模糊匹配。錨定開頭 a 以a開頭 預設錨定乙個字元 錨定結尾 a 以a結尾 預設錨定乙個字元 匹配符 匹配字串 匹配除回車以外的任意乙個字元 字串分組 定義字元類,匹配括號中的乙個字元 表示否定括號 現字元類中的字元,取反。轉...

shell正規表示式

句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...

shell正規表示式

句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...