Linux 的正則表達式

重要性

咱們經過sed或awk工具能夠輕鬆愉快的對一堆文本分析、對數據進行處理、服務器報錯日誌的分析、服務器用戶訪問日誌統計分析等。正則表達式

可是要玩耍好sed和awk工具,正則表達式是基礎,不得不掌握。bash

單個字符

特定字符

如'1'、'a'、'A'服務器

範圍字符

數字字符:[0-9],表明0到9數字中的任意一個工具

小寫字符:[a-z],表明a到z字母中的任意一個spa

大寫字符:[A-Z],表明A到Z字母中的任意一個日誌

特殊符號:[,._]code

取反:[^0-9],表明除0到9數字外的任意一個字符字符串

任意字符

表明任意字符:'.'string

注意:'[.]',表明普通的點(自己的含義),'\.'也是表明普通的點(自己的含義)class

邊界字符

頭尾字符,即以某個或多個字符開頭,或者是以某個或多個字符結尾

例如:
^root 表明以這個單詞開始匹配
root$ 表明以這個單詞結尾匹配
^$ 表明空行
複製代碼

元字符

表明普通字符或特殊字符

\w 表明匹配任何字類字符,包括下劃線:[A-Za-z0-9_]
\W 表明匹配非任何字類字符,如:^[A-Za-z0-9_]
\b 表明單詞的分割符(即不在連續的單詞中間),如:'\bx'
複製代碼

重複字符

* 表明零次或者屢次匹配前面的字符或者子表達式 
如 'ab*' ,只對b重複
'\(ab\)*' ,對ab重複
也可用{0,}表示

+ 表明一次或者屢次匹配前面的字符或者子表達式 
如 'ab\+',只對b重複
也可用{1,}表示

?表明零次或者一次匹配前邊的字符或子表達式 
如 'ab\?',只對b重複
也可用{0,1}表示

重複特定次數: {n,m} 重複最小n,最大m次
如 '[0-9]\{n,m\}'

任意字符串的表示:.*
如:'^r.*''m.*c'//不只匹配4個字符,開頭是m,結尾是c,但中間長度2個字符或以上

注意:'m..c' 只匹配4個字符,開頭是m,結尾是c
複製代碼

坑:貪婪的匹配,如:'\bm.*c\b'

更加精確的匹配,如:'\bm[a-z]*c\b'

邏輯正則

| 或,如:'bin/(false|true)'

哪些字符表示須要帶'\'

(),如:'\(\)'
{},如:'\{\}'
+,如:'\+'
?,如:'\?'
|,如:'\|'
\,如:'\\'
複製代碼

例子

一、匹配4-10位的QQ號

'^[0-9]\{4,10\}$'

二、匹配15位或18位身份證號(支持帶X的)

'^[1-9]\([0-9]\{13\}\|[0-9]\{16\}\)[0-9xX]$'

三、匹配密碼(由數字、26個字母和下劃線組成)

'^\w\+$'

相關文章
相關標籤/搜索