一、正則表達式概述git
經常使用的正則表達式引擎
POSIX基本正則表達式BRE引擎
POSIX擴展正則表達式BRE引擎正則表達式
正則表達式: 是一類字符所書寫出的模式(pattern)
元字符: 不表示字符自己的意義,用於額外功能性描述
基本正則表達式和擴展正則表達式express
二、基本正則表達式
基本正則表達式的元字符:grep -E
字符匹配:
.: 任意單個字符
[]: 指定範圍內的任意單個字符
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]: 指定範圍外的任意單個字符 #非#ide
次數匹配:用來指定匹配其前面的字符的次數 *: 任意次 例子: x*y,xxy,xy,y .*: 匹配任意長度的任意字符 \?: 0次或1次 x\?y,xy,y,xxy 貪婪模式:儘量的長的去匹配字符; \{m\}: 匹配m次 \{m,n\}: \{m,\}: 至少m次 \{0,n\}: 至多n次 錨定: ^:開頭 $:結尾 ^$: 空白行 \<: 定位詞首 \b: 分別代替詞首詞尾 \>: 定位詞尾 分組: \(\) \(ab\)*xy 引用: \1: 後向引用,引用前面的第一個左括號以及與之對應的右括號中的模式所匹配到的內容 \2: ... \(a.b\)*xy\1: #a6bxya6b He like his lover. She love her liker. He love his lover. She like her liker. grep '\(l..e\).*\1r' test.txt
三、擴展正則表達式
擴展正則表達式的元字符:
egrep:使用擴展正則表達式來構建模式,至關於grep -Espa
字符匹配: .: 任意單個字符 []: 指定範圍內的任意單個字符 [0-9],[[:digit:]] [a-z],[[:lower:]] [A-Z],[[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]] [[:punct:]] [^]: 指定範圍外的任意單個字符 #非# 次數匹配: *: 匹配其前面的字符任意次 ?: 匹配其前面的0或1次 +: 匹配其前面的字符至少1次 {m}: 匹配其前面的字符m次 {m,n}:至少m次,至多n次 {m,}: 至少m次 {0,n}:至多n次 錨定: ^:行首 $:行尾 ^$: 空白行 \<,\b: 詞首 \>, \b: 詞尾 分組: (): 分組 |: 或者,ac|bc
特殊字符
[:alnum :] 文字數字 匹配任意字母字符0-9 a-z A-Z
[:alpha:] 文字 匹配任意字母,大寫或小寫
[:digit:] 數字 0-9
[:graph:] 非空字符( 非空格控制字符)
[:lower:] 小寫字符
[:upper:] 大寫字符
[:cntrl:] 控制字符
[:print:] 非空字符( 包括空格)
[:punct:] 標點符號
[:blank:] 空格和TAB字符
[:xdigit:] 16 進制數字
[:space:] 全部空白字符( 新行、空格、製表符)3d