Linux正則表達式

基礎正則表達式(Basic Regular Expression)

序號 符號 描述 示例
1 ^ 匹配以……開頭的行 ^ab匹配以ab開頭的行
2 $ 匹配以……結尾的行 ab$匹配以ab結尾的行
3 ^$ 匹配空行 ^$匹配空行,不匹配空格
4 . 匹配任意單個字符 ab.匹配abc或abd,不匹配abcd或abde,包括空格
5 \ 轉義符,將特殊符號進行轉義 a\.b匹配a.b,不匹配ajb
6 * 匹配前面項0次或多次 ab*匹配a或ab或abbb
7 .* 匹配任意字符 ab.*匹配ab或abc或abcd,包括空行
8 [] 匹配集合以內的任意單個字符 ab[cd]匹配abc或abd,不匹配abj或abcd
9 [^] 匹配集合以外的任意單個字符 ab[^cd]匹配abe或abj,不匹配abc或abd
  • 數據模擬
[root@linux-node1 ~]# vim linbin.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billard ball and chinese chess.

my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org

my qq num is 49000488.

not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
  • 匹配以……開頭的行
[root@linux-node1 ~]# grep "^m" linbin.txt
my blog is http://oldboy.blog.51cto.com
my qq num is 49000488.
my god,i am not oldbey,but OLDBOY
  • 匹配以……結尾的行
[root@linux-node1 ~]# grep "m$" linbin.txt
my blog is http://oldboy.blog.51cto.com
  • 匹配空行
[root@linux-node1 ~]# grep -vn "^$" linbin.txt
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billard ball and chinese chess.
6:my blog is http://oldboy.blog.51cto.com
7:our site is http://www.etiantian.org
9:my qq num is 49000488.
11:not 4900000448.
12:my god,i am not oldbey,but OLDBOY
13:oldb y
  • 匹配任意單個字符
[root@linux-node1 ~]# grep "." linbin.txt  ##不匹配空行
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y

[root@linux-node1 ~]# grep "oldb.y" linbin.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
my god,i am not oldbey,but OLDBOY
oldb y
  • 轉義符
[root@linux-node1 ~]# grep "\.$" linbin.txt
I teach linux.
I like badminton ball,billard ball and chinese chess.
my qq num is 49000488.
not 4900000448.
  • 匹配前面項0次或多次
[root@linux-node1 ~]# grep "0*" linbin.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billard ball and chinese chess.

my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org

my qq num is 49000488.

not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y

[root@linux-node1 ~]# grep -o "0*" linbin.txt  ##精確匹配字符串
000
00000
  • 匹配任意字符
[root@linux-node1 ~]# grep ".*" linbin.txt  ##匹配空行
I am oldboy teacher!
I teach linux.

I like badminton ball,billard ball and chinese chess.

my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org

my qq num is 49000488.

not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
  • 匹配集合以內的任意單個字符
[root@linux-node1 ~]# grep "[abc]" linbin.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my god,i am not oldbey,but OLDBOY
oldb y

[root@linux-node1 ~]# grep "[0-9]" lb.txt
my blog is http://oldboy.blog.51cto.com
my qq num is 49000488.
not 4900000448.ss
  • 匹配集合以外的任意單個字符
[root@linux-node1 ~]# grep "[^a-z]" linbin.txt  ##匹配非小寫字母
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y

[root@linux-node1 ~]# grep "[^A-Z]" linbin.txt  ##匹配非大寫字母
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y

[root@linux-node1 ~]# grep "[^0-9]" linbin.txt  ##匹配非數字
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y

擴展正則表達式(Extended Regular Expression)

序號 符號 描述 示例
1 + 匹配前面項1次或多次 ab+匹配ab或abb,不匹配a
2 ? 匹配前面項0次或1次 ab?匹配a或ab,不匹配abb
3 匹配 兩邊的任意一項 ab cd匹配ab或cd
4 () 匹配表達式 a(c d)e匹配ace或ade,不匹配ae
5 {n,m} 匹配前面項n~m次 ab{2,3}匹配abb或abbb,需要對{}進行轉義
6 {n,} 匹配前面項至少n次,包含n次 ab{2,}匹配abb或abbb,需要對{}進行轉義
7 {n} 匹配前面項n次 ab{2}匹配abb,需要對{}進行轉義
8 {,m} 匹配前面項最多m次,包含m次 ab{,2}匹配a或ab或abb,需要對{}進行轉義
  • 數據模擬
[root@linux-node1 ~]# vim linbin.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billard ball and chinese chess.

my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org

my qq num is 49000488.

not 4900000448.
my god,i am not oldbey,but OLDBOY
good
goood
gd
  • 匹配前面項1次或多次
[root@linux-node1 ~]# grep -E "go+d" linbin.txt
my god,i am not oldbey,but OLDBOY
good
goood
  • 匹配前面項0次或1次
[root@linux-node1 ~]# grep -E "go?d" linbin.txt
my god,i am not oldbey,but OLDBOY
gd
  • 匹配|兩邊的任意一項
[root@linux-node1 ~]# grep -E "god|good" linbin.txt
my god,i am not oldbey,but OLDBOY
good
  • 匹配表達式
[root@linux-node1 ~]# grep -E "g(la|oo)d" linbin.txt
good
[root@linux-node1 ~]# egrep "g(la|oo)d" linbin.txt
good
[root@linux-node1 ~]# egrep "g(oo)?d" linbin.txt
good
gd
  • 匹配前面項n~m次
[root@linux-node1 ~]# grep -E "0{3,5}" linbin.txt
my qq num is 49000488.
not 4900000448.
  • 匹配前面項至少n次
[root@linux-node1 ~]# grep -E "0{3,}" linbin.txt
my qq num is 49000488.
not 4900000448.
  • 匹配前面項n次
[root@linux-node1 ~]# grep -E "0{3}" linbin.txt
my qq num is 49000488.
not 4900000448.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章