一正則表達式
regual Expression 簡稱REGEXP
定義:由一類特殊字符以及文本字所編寫的模式,其中有些字符不表示其字面意義,而用于統配和統配功能
分類:
基本正則表達式:BRE 貪婪模式(盡可能長地去匹配符合模式的內容
擴展表達式:ERE
BRE和ERE區別:元字符不同
基本正則表達式元字符:
字符匹配、次數匹配、位置錨定、分組及引用
一、字符匹配
.:匹配任意單個字符
[]:匹配指定的范圍內的任意單個字符
[^]:匹配指定外的任意單個字符
\d:匹配數字
\s:匹配空格
\w:匹配任意字母數字下劃線或漢字
[:digit:] :0-9
[:alpha:]所有的大小寫
[:upper:]:所有大寫字母
[:lower:]:所有小寫字母
[:alnum:]:所有字母和數字
[:punct:]:所有的標點符號
[:space:]:空格和tab
二、匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面字符出現的次數
*:匹配其前面的字符任意次;0,1,多次;
.*:任意長度的任意字符
\?:匹配前面的字符0或1次
\+:匹配前面的字符至少1次
\{m\}:匹配前面字符m次
\{n,m\}:匹配前面字符至少m次,至多n次
三、位置鎖定
^:行首錨定 ;用于模式的最左側
$:行尾錨定;用于模式的最右側
^Pattern$:用于pattern來匹配某行
^$;空白行
單詞:非特殊字符組成的連續字符都稱為單詞
\<或\b:詞首錨定,用于模式的最左側
\> 或\b:詞尾錨定,用戶模式的最右側
四、分組及引用(后向引用)(重點理解)
分組符號\(\):將一個或多個字符捆綁在一起,當一個整體進行處理
分組意義:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄到內存的變量中
引用這些變量:\1:模式從左起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符。
擴展的正則表達式
擴展正則表達式元字符
字符匹配
.:匹配任意單個字符
[]:匹配指定的范圍內的任意單個字符
[^]:匹配指定外的任意單個字符
[:digit:] :0-9
[:alpha:]所有的大小寫
[:upper:]
[:lower:]
[:alnum:]
[:punct:]
[:space:]意義和正規表達式意義相同
次數匹配
*:匹配其前面的字符任意次;0,1,多次;
.*:任意長度的任意字符,不包含換行符號
?:匹配前面的字符0或1次
+:匹配前面的字符至少1次
{m}:匹配前面字符m次
{n,m}:匹配前面字符至少m次,至多n次
位置錨定
^:行首錨定 ;用于模式的最左側
$:行尾錨定;用于模式的最右側
\<或\b:詞首錨定,用于模式的最左側
\> 或\b:詞尾錨定,用戶模式的最右側
分組及引用
分組符號()
或
a|b :a或b
c|cat :C或cat
(c|C):cat 或Cat
二正則表達式之應用一:grep
grep定義:
作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文本逐行進行匹配檢查;打印匹配到的行
模式:由正則表達式的元字符及文本字符做編寫的過濾條件
全拼:Global search regular experssion an print out the line
grep egrep fgrep:區別及之間轉換
grep:支持正規的正則表達式 ;grep -E=egrep grep -F=fgrep
egrep:支持擴展正則表達式 ;egrep -G=grep
fgrep:不支持正規表達式
用法
grep [OPTINONS] PATTER FILE ()
選項
–color=auto 自動為匹配的字符著色
-i :ignorecase 忽略字符大小寫
-o:只顯示字符串的本身
-v:–inver –match顯示不被模式匹配的行
-E 支持擴展的正則表達式
-F 支持匹配的字符串
-q 安靜模式既不輸出任何信息
-A 數字n:顯示搜索匹配到的前n行也顯示
-B 數字n:顯示搜索匹配到的后n行也顯示
-C 數字n:前后n行都顯示
-w :以單詞進行搜索
-n 顯示匹配的行號
-c統計匹配的行數
– e:實現多個選項間的邏輯or關系grep –e ‘cat ’ – e ‘dog’ file
grep 結合正則表達式的實例引用:
實例一:搜索文件中含有root的用戶并且不區分大小寫,并且只將匹配的字符打印出來
實例二:顯示含有root單詞或者hello單詞的行
實例三:-q模式不將結果顯示到屏幕上(一般用于腳本的編寫)
實例四:grep 結合正則表達式使用,顯示出含有"rt 、rot或者roo….(任意個o)t的行并顯示行號
實例五:分組應用 添加用戶 bash、 testbash、 basher以及nologin(其shell為/sbin/nologin),而后找出 /etc/passwd文件中用戶名同shell名的行
更多實例詳見:
20160804課后作業
原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/30069