擴展正則用法小結

正則表達式:regular expression。縮寫成REGEXP,是用來匹配文件內容的。通過特點的字符,通配文件內容的。

擴展正則表達式用在egrep命令中,egrep = grep -E

擴展正則表達式的要點有如下幾點:

1、字符匹配:

. :表示任意一個字符

[] : 表示匹配中括號內的任意一個字符

[^] : 表示匹配中括號內除外的任意一個字符。

需要注意的:字符集的表示方式,

[[:punct:]] 表示匹配標點符號的

[[:space:]] 表示匹配空白字符的

[[:digit:]] 表示匹配數字的

[[:alpha:]] 表示匹配字母的

[[:lower:]] 表示匹配小寫字母的

[[:upper:]] 表示匹配大寫字母的

[[:dignum:]] 表示匹配數字字母的。

同時匹配是支持取反操作的。[^[::]]

2、關於次數錨定

*:表示匹配其前面的字符任意次。包含零次

例子:

假如有一個文本的內容如下:

a

b

ab

aab

abb

amnb

acdb

amnbmnb


grep 'a.*b' reg.txt #表示匹配包含以a開頭,以b結束的行




?: 表示匹配其前面的字符一次或零次。注意在擴展正則表達式中不要使用轉義符\


{m,n}: 表示匹配其前面的字符至少m次,至多n次,主要不要使用轉義符\


grep 'a.{1,3}b' reg.txt #表示匹配以a開頭,b結束,中間至少有一個,至多有三個任意字符的行


+:表示匹配其前面的字符至少一次。

egrep 'a.+b' reg.txt # 表示匹配包含以a開頭,不結束,中間至少有一個字符的行

# 注意,在擴展正則表達式中,?是不需要\轉義符的


\b \<: 表示匹配單詞首部


grep '\<ab' reg.txt

grep '\bab' reg.txt

都是匹配以ab詞組開頭的行 


\> \b: 表示匹配單詞尾部

3、位置錨定

^: 表示錨定行首

$:表示錨定行尾

4、分組表示:

():對括號內的內容進行分組匹配;\1,\2,\3(可以進行後項【前項】匹配)

假設有一個文本是:

He love his lover

She like her lover

He like his lover

She like her liker

需要匹配一行中如果有同時包含兩個love或兩個like的行?

egrep '(l..e).*\1' reg.txt

[root@localhost testdir]# egrep '(l..e).*\1' reg.txt

He love his lover

She like her liker


[root@localhost testdir]# egrep 'l..e.*l..e' reg.txt 

He love his lover

She like her lover

He like his lover

She like her liker

需要注意兩者的區別用法。什麼是後項匹配。


5、擴展正則表達式的或者表示方法

| :對 | 左右兩邊表示或者。


C|cat 可以匹配的C 和 cat 還是Cat 和 cat呢?


[root@localhost testdir]# egrep 'C|cat' reg.txt

cat

Cat

C

Chinese


可以使用 egrep '(C|c)at' reg.txt

可以匹配到:Cat和cat

所以| 或的用法是匹配| 兩邊的字符或者字符串。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章