正则表达式

正则表达式

1. 正则表达式分类

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:

  • Basic REGEXP(基本正则表达式)
  • Extended REGEXP(扩展正则表达式)

2. 基本正则表达式

//元字符
 ##   .           //任意单个字符
[root@zabbix opt]# ls
1  2  3  4  5  6  7  8  9  a  ab  abc  abcc  addcc  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
[root@zabbix opt]# ls | grep '^.$'
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
[root@zabbix opt]#
    
##    []          //匹配指定范围内的任意单个字符
[root@zabbix opt]# ls | grep '^[abc]$'
a
b
c
[root@zabbix opt]# ls | grep '^[a-hz]$'
a
b
c
d
e
f
g
h
z
[root@zabbix opt]#
 ##   [^]         //匹配指定范围外的任意单个字符
[root@zabbix opt]# ls | grep '^[^1-9a-hz]$'
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
[root@zabbix opt]#
    
//匹配次数(贪婪模式)
  ##  *           //匹配其前面的任意单个字符任意次
[root@zabbix opt]# ls | grep '^abc*$'
ab
abc
abcc
[root@zabbix opt]# ls | grep '^ab*c*$'
a
ab
abbccc
abc
abcc
[root@zabbix opt]#    
  ##  .*          //任意长度的任意字符
[root@zabbix opt]# ls | grep '^abc.*$'
abc
abcc
abcccc
abccccccc
[root@zabbix opt]#    
  ##  \?          //匹配其前面的任意单个字符1次或0次
[root@zabbix opt]# ls | grep '^a\?b$'
ab
b
[root@zabbix opt]# ls | grep '^ab\?$'
a
ab    
  ##  \+          //匹配其前面的任意单个字符至少1次
[root@zabbix opt]# ls | grep '^abc\+$'
abc
abcc
abcccc
abccccccc
[root@zabbix opt]# ls | grep '^ab\+c$'
abbbbbc
abc
[root@zabbix opt]#    
  ##  \{m,n\}     //匹配其前面的任意单个字符至少m次,至多n次
[root@zabbix opt]# ls | grep '^abc\{1,3\}$'
abc
abcc
[root@zabbix opt]#    
//位置锚定
  ##  ^           //锚定行首,此字符后面的任意单个字符必须出现在行首    
  ##  $           //锚定行尾,此字符前面的任意单个字符必须出现在行尾
[root@zabbix opt]# ls | grep '^a'
a
ab
abbbbbc
abbccc
abc
abcc
abcccc
abccccccc
addcc
[root@zabbix opt]# ls | grep 'a$'
a
[root@zabbix opt]#    
  ##  ^$          //空白行    
  ##  \<或\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
[root@zabbix opt]# grep '\bhello' a
hello tom hello zwl hello abc
hello sljfasfj hello klsjfaj
[root@zabbix opt]#    
  ##  \>或\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
[root@zabbix opt]# grep 'hello\b' a
hello tom hello zwl hello abc
hello sljfasfj hello klsjfaj
selllhello lajfiojsdafhello    
/分组
  ##  \(\)
    例:\(ab\)*
  ## //后向引用
  ##      \1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
  ##      \2      //引用第二个左括号以及与之对应的右括号所包括的所有内容
[root@zabbix opt]# ls | grep '\(ab\)'
ab
abbbbbc
abbccc
abc
abcc
abcccc
abccccccc
[root@zabbix opt]#

3. 扩展正则表达式

//字符匹配
    .       //匹配任意单个字符
    []      //匹配指定范围内的任意单个字符
    [^]     //匹配指定范围外的任意单个字符
//次数匹配
    *       //匹配其前面的任意单个字符任意次
    ?       //匹配其前面的任意单个字符1次或0次
    +       //匹配其前面的任意单个字符至少1次
    {m,n}   //匹配其前面的任意单个字符至少m次,至多n次

//位置锚定
    ^       //锚定行首,此字符后面的任意单个字符必须出现在行首
    $       //锚定行尾,此字符前面的任意单个字符必须出现在行尾
    ^$      //空白行
    \<\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
    \>\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
//分组
    ()      //分组
    \1\2\3....
   例:(ab)*
    //后向引用
        \1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
        \2      //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
    |       //or 默认匹配|的整个左侧或者整个右侧的内容
    //例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值