Shell正規表示式

但願人長久zz發表於2020-10-16

Shell正規表示式

正規表示式的定義
正規表示式是使用單個字串來描述、匹配- -系列符合某個句法規則的字串,簡單來說,是一種匹配字串的方法,通過一些特殊符號,實現快速查詢、刪除、替換某個特定字串。

正規表示式是由普通字元與元字元組成的文字模式。其中普通字元包括大小寫字母、數字、標點符號及一些其他符號,元字元則是指那些在正規表示式中具有特殊意義的專用字元,可以用來規定其前導字元(即位於元字元前面的字元)在目標物件中的出現模式。

正規表示式的用途
正規表示式對於系統管理員來說是非常重要的,系統執行過程中會產生大量的資訊,這些資訊有些是非常重要的,有些則僅是告知的資訊。
身為系統管理員如果直接看這麼多的資訊資料,無法快速定位到重要的資訊,如“使用者賬號登入失敗”“服務啟動失敗”等資訊。這時可以通過正規表示式快速提取“有問題”的資訊。
如此以來,可以將運維工作變得更加簡單、方便。

正規表示式的分類
正規表示式的字串表達方法根據不同的嚴謹程度與功能分為基本正規表示式與擴充套件正規表示式。基礎正規表示式是常用正規表示式最基礎的部分。在Linux系統中常見的檔案處理工具中grep 與sed支援基礎正規表示式,而egrep與awk支援擴充套件正規表示式。

元字元

  •    \      轉義字元
    
  •     ^     開頭
    
  •     $    結尾
    
  •      .    任意字元
    
  •     *     匹配前面字元的N次數
    
  •     +    匹配前面的子表示式一次或多次。+ 等價於 {1,}。 
    
  •     ?    匹配前面的子表示式零次或一次。? 等價於 {0,1}。 
    
  •     {n}   n 是一個非負整數,匹配確定的n 次。 
    
  •     {n,}  n 是一個非負整數,至少匹配n 次。 
    
  •     {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。 
    

常用正規表示式

  •     匹配中文字元的正規表示式: [\u4e00-\u9fa5] 
    
  •     匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 
    
  •     匹配空行的正規表示式:\n[\s| ]*\r 
    
  •      匹配HTML標記的正規表示式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
    
  •       匹配首尾空格的正規表示式:(^\s*)|(\s*$) 
    
  •       匹配IP地址的正規表示式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 
    
  •       匹配Email地址的正規表示式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
    
  •        匹配網址URL的正規表示式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 
    

sql語句:^(select|drop|delete|create|update|insert).*$

  •        1、非負整數:^\d+$ 
    
  •        2、正整數:^[0-9]*[1-9][0-9]*$ 
    
  •        3、非正整數:^((-\d+)|(0+))$ 
    
  •        4、負整數:^-[0-9]*[1-9][0-9]*$ 
    
  •        5、整數:^-?\d+$ 
    
  •        6、非負浮點數:^\d+(\.\d+)?$ 
    
  •        7、正浮點數:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$ 
    
  •        8、非正浮點數:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 
    
  •        9、負浮點數:^(-((正浮點數正則式)))$ 
    
  •        10、英文字串:^[A-Za-z]+$ 
    
  •        11、英文大寫串:^[A-Z]+$ 
    
  •        12、英文小寫串:^[a-z]+$ 
    
  •        13、英文字元數字串:^[A-Za-z0-9]+$ 
    
  •        14、英數字加下劃線串:^\w+$ 
    
  •        15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 
    
  •        16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$  或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^& lt;>\"\"])*$ 
    
  •        17、郵政編碼:^[1-9]\d{5}$ 
    
  •        18、中文:^[\u0391-\uFFE5]+$ 
    
  •        19、電話號碼:^((\d2,3\d2,3)|(\d{3}\-))?(0\d2,30\d2,3|0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$ 
    
  •        20、手機號碼:^((\d2,3\d2,3)|(\d{3}\-))?13\d{9}$ 
    
  •        21、雙位元組字元(包括漢字在內):^\x00-\xff 
    
  •        22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那樣的trim函式) 
    
  •        23、匹配HTML標記:<(.*)>.*<\/\1>|<(.*) \/> 
    
  •        24、匹配空行:\n[\s| ]*\r 
    
  •        25、提取資訊中的網路連結:(h|H)(r|R)(e|E)(f|F) *= *('|”)?(\w|\\|\/|\.)+('|”| *|>)? 
    
  •        26、提取資訊中的郵件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
    
  •        27、提取資訊中的圖片連結:(s|S)(r|R)(c|C) *= *('|”)?(\w|\\|\/|\.)+('|”| *|>)? 
    
  •        28、提取資訊中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 
    
  •        29、提取資訊中的中國手機號碼:(86)*0*13\d{9} 
    
  •        30、提取資訊中的中國固定電話號碼:(\d3,4\d3,4|\d{3,4}-|\s)?\d{8} 
    
  •        31、提取資訊中的中國電話號碼(包括移動和固定電話):(\d3,4\d3,4|\d{3,4}-|\s)?\d{7,14}  
    
  •        32、提取資訊中的中國郵政編碼:[1-9]{1}(\d+){5} 
    
  •        33、提取資訊中的浮點數(即小數):(-?\d*)\.?\d+ 
    
  •        34、提取資訊中的任何數字 :(-?\d*)(\.\d+)?  
    
  •        35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)  
    
  •        36、電話區號:/^0\d{2,3}$/  
    
  •        37、騰訊QQ號:^[1-9]*[1-9][0-9]*$ 
    
  •        38、帳號(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
    
  •        39、中文、英文、數字及下劃線:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
    

以上

相關文章