正则表达式

正则表达式

1. 正则表达式分类

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

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

2. 基本正则表达式

//元字符
    .           //任意单个字符
    []          //匹配指定范围内的任意单个字符
    [^]         //匹配指定范围外的任意单个字符
//匹配次数(贪婪模式)
    *           //匹配其前面的任意单个字符任意次
    .*          //任意长度的任意字符
    \?          //匹配其前面的任意单个字符1次或0次
    \+          //匹配其前面的任意单个字符至少1次
    \{m,n\}     //匹配其前面的任意单个字符至少m次,至多n次
//位置锚定
    ^           //锚定行首,此字符后面的任意单个字符必须出现在行首
    $           //锚定行尾,此字符前面的任意单个字符必须出现在行尾
    ^$          //空白行
    \<或\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
    \>或\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
/分组
    \(\)
    例:\(ab\)*
    //后向引用
        \1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
        \2      //引用第二个左括号以及与之对应的右括号所包括的所有内容

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

4.正则表达式案例

[root@zabbix ~]# cat > nidaye << EOF
> aksdjk
> images
> aaabbb
> sakdhkkkjwu
> haoouldayou
> acbdd
> sbckeu
> EOF

^ 查找以什么开头的行

[root@zabbix ~]# grep '^a' nidaye 
aksdjk
aaabbb
acbdd

$ 查找以什么结尾的行

[root@zabbix ~]# grep 'u$' nidaye 
sakdhkkkjwu
haoouldayou
sbckeu

^$排除空行

[root@zabbix ~]# grep -v '$^' nidaye 
aksdjk
images
aaabbb
sakdhkkkjwu
haoouldayou
acbdd
sbckeu

. 匹配单个任意字符

[root@zabbix ~]# grep  '.' nidaye 
aksdjk
images
aaabbb
sakdhkkkjwu
haoouldayou
acbdd
sbckeu

\转义字符(将\放在任意字符前面后面的字符都将失去意义)

[root@zabbix ~]# grep  '\.' nidaye 
[root@zabbix ~]# 

*匹配前一个字符(连续出现)0次或多次

[root@zabbix ~]# touch lx lxx lxxxxxx
[root@zabbix ~]# ls | grep 'lx*'
Dockerfile
compute_lx.sh
httpd_lx.sh
lx
lx.sh
lxx
lxxxxxx
mysql_install.sh

.*匹配所有字符

[root@zabbix test]# ls | grep '.*'
1a
1b
1c
1d
1e
1f
1g
1h
1i
1j
1k
1l
2a
.....

[] 匹配[]内包含的任意一个字符

[root@zabbix test]# ls | grep [6ab]
1a
1b
2a
2b
3a
3b
4a
4b
5a
5b
6a
6b
6c
6d
6e
6f
6g
6h
6i
6j
6k
6l

[^] 匹配除了[^]内的任意其他字符(取反)

[root@zabbix test]# ls | grep '[^a]'
1b
1c
1d
1e
1f
1g
1h
1i
1j
1k
1l

+匹配前面一个字符1次或多次

基础正则
\+
[root@zabbix ~]# grep 'a\+' nidaye 
aksdjk
images
aaabbb
sakdhkkkjwu
haoouldayou
acbdd
扩展正则
[root@zabbix ~]# egrep  '+a' nidaye 
aksdjk
images
aaabbb
sakdhkkkjwu
haoouldayou
acbdd

?匹配前面一个字符0次或一次

[root@zabbix test]# ls | egrep '[abc$]'
ab
abc
abcc

\<\b 锚定词首

[root@zabbix ~]# cat > rdp << EOF
> hello word nidaye hhh
> nidaye you like home
> EOF
[root@zabbix ~]# grep '\<w' rdp 
hello word nidaye hhh
[root@zabbix ~]# egrep '\bn' rdp 
hello word nidaye hhh
nidaye you like home

\>\b 锚定词尾

[root@zabbix ~]# egrep 'h\>' rdp 
hello word nidaye hhh
[root@zabbix ~]# egrep 'e\b' rdp 
hello word nidaye hhh
nidaye you like home

d nidaye hhh
[root@zabbix ~]# egrep ‘\bn’ rdp
hello word nidaye hhh
nidaye you like home


`\>`或`\b` 锚定词尾

```bash
[root@zabbix ~]# egrep 'h\>' rdp 
hello word nidaye hhh
[root@zabbix ~]# egrep 'e\b' rdp 
hello word nidaye hhh
nidaye you like home

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值