正則表達式使用方式及作用:
正則表達式就是通過處理字符串的方法,可以讓用戶輕鬆搜索/替換某特定的字符串。
正則表達式類型:
正則表達式分爲: 基本正則表達式和擴展正則表達式
grep和基本正則表達式的關係:
grep是強大的文本搜索工具,支持基本正則表達式,通過元字符去匹配搜索,替換字符。搜索迅速,方便,智能化。
一,基本正則表達式的元字符:
字符匹配:
. :匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[0-9] [[:digit:]]匹配任意一個數字
[a-z] [[:lower:]]匹配任意一個小寫字母
[A-Z] [[:upper:]]匹配任意一個大寫字母
[[:space:]]匹配空白字符
[[:paunct:]]
[[:alpha:]] 匹配任意一個字母
[[:alnum:]] 匹配任意一個字母或數字
[^]:匹配指定範圍外的任意單個字符
次數匹配元字符:用於實現指定其前面的字符所能夠出現的次數
*:任意長度,它前面的字符可以出現任意次
例如: x*y = xxy
\?:0次或1次,它前面的字符是可有可無
例如: x\?y =xy y
\{m\}:m次,它前面的字符要出現m次
例如:x\{2\}y=xxy
\{m,n\}:至少m次 至多n次
例如x \{2,5\} y = xxy
\{m,\}:至少m次
\{0,n\}:至多N次
.*:任意長度的任意字符
位置錨定:
^:行首錨定 寫在模式最左側
$:行尾錨定 寫在模式最右側
^$:空白行
不包含特殊字符的連續字符組成的串叫單詞:
\<:詞首 出現於單詞左側
\>:詞尾 出現於單詞右側
分組:
\(\)
例如:\(ab\)*
分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之後可被引用。
引用:
例如\(ab\(x\)y\).*\(mn\)
有編號:左到右的左括號,與其匹配右括號
\#:引用第n個括號所匹配前面的內容,而非模式本身
例如:\(ab\?c\).*\1 =abcmnabc
命令選項:
-v:反向選取
-o:僅顯示匹配的字串,而非字串所在的行
-i:忽略字符大小寫
-E:支持擴展正則表達式
二,基本正則表達式的元字符示例:
示例1(字符匹配:[a-z]匹配範圍內的任意字符 [[:digit:]]匹配任意一個數字)
示例2 (次數匹配元字符\{m\}:m次,它前面的字符要出現m次)
示例3(位置錨定:\<:詞首錨定 )
示例4(分組:\(\)模式)
通過命令別名可以改變搜索到字符的字體
命令:alias grep='grep --color=auto'^C
注:通過以上命令可立即生效,想要永久保存有效,修改配置文件。
示例1 [a-z]
示例2 次數匹配元字符:用於實現指定其前面的字符所能夠出現的次數
\{m\}:m次,它前面的字符要出現m次
例如:1\{2\}y=1128
示例3 位置錨定:
\<:詞首 出現於單詞左側
示例4 分組:
\(\)
例如:\(12\)*
*:匹配任意長度的字符
\<:詞首錨定
三,egrep支持正則表達式:
擴展正則表達式除了基本正則表達式幾個元字符不同,基本一致。