正則表達式是由一類特殊字符所編寫的模式,通過這些字符的使用,我們能檢索 查找文本中符合某些規則的內容。
正則表達式元字符的分類有:字符匹配,匹配次數,位置錨定,分組等。
字符匹配:
. : 匹配任意單個字符
[] : 匹配指定范圍內的任意單個字符
[^] : 匹配指定范圍外的任意單個字符
[:alnum:] 數字和字符
[:alpha:] 英文大小寫字符 a-z A-Z
[:lower:] 小寫字母
[ :upper:] 大寫字母
[:space:] 專門匹配空格
注意:這幾個使用頻率相對較高。
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
注意:這幾個使用頻率相對較低。
匹配次數
* 匹配前面的字符任意次,0 到無窮
.* 任意字符出現任意次,比如說 123 456 abc (這個使用頻率很高,很重要)
a* a字符出現任意次 aaaa aa
[[:lower:]]* 任意小寫字母出現任意次
\? 匹配前面的字符出現0次或者1次
a\? 出現0次或者1次
\+ 匹配前面的字符至少1次
a\+ a至少出現1次
\{n\} 前面的字符出現n次
[0-9]\{3\} 000-999
\{m,n\}匹配前面的字符出現m到n次,m,n是一個范圍
[0-9]\{1,3\} 0-999
\{,n\}匹配前面的字符最多出現n
[0-9]\{,3\} 最大匹配是999
\{m,\}匹配前的字符至少出現m次
[0-9]\{3,\} 000 無窮
位置錨定
^ 錨定行首
$ 錨定行尾
^$ 匹配空行的
^[[:space:]] 行首是空白的字符
^[[:space:]]*$ 也是 空行
^a 以a開頭的行
b$ 以b結束的行
^a.*b$ 以a開頭 中間任意字符 以b結尾的行
^a.*[[:space:]]\{3\}.*b$ a開頭跟任意字符,中間出現三次空格再跟任意字符 以b結尾的行
^# 以#開頭的行
例子:cat /etc/profile | grep -v “^#” | grep -v “^$”
例子: cat /etc/httpd/conf/httpd.conf | grep -v “^#” | grep -v “^$”
\b \b 匹配詞首和詞尾
\< \> 匹配詞首和詞尾
例子: \broot\b \<root\> 錨定root這個單詞,不會匹配例如root123之類的單詞
分組
將匹配規則分成不同的組 使用 1 2 3..等數字去標識,便于后面使用同樣規則的時候可以直接飲用
\(root\)\+\1 注意:這種使用方法比較常用
\(string1\+\(string2\)*\)
\1 string1\+\(string2\)*
\2 string2
或者 |
a \| b
C \| cat
原創文章,作者:fsy,如若轉載,請注明出處:http://www.www58058.com/72664