正则表达式

正则表达式

1.正则表达式单字符

单字符种类 描述 例子
特定字符 某个具体的字符 ‘1’,a
范围内字符 单个字符[] 数字字符:[0-9],[259]
小写字符:[a-z]
反向字符: [ ^0-9 ]
任意字符 代表任何一个字符 '.'
[root@localhost tmp]# grep '1' passwd.bak  #查找有'1' 的行
[root@localhost tmp]# grep '[A-Z]' passwd.bak   #查找所有的大写字母
[root@localhost tmp]# grep '[a-zA-Z]' passwd.bak   #查找所有的字母
[root@localhost tmp]# grep '[,:_/]' passwd.bak     #查找特殊字符
[root@localhost tmp]# grep '[^0-9]'  passwd.bak    #查找不包括数字的行
[root@localhost tmp]# grep '\.' passwd.bak         #查找.这个字符,转义了

2:其它字符的表示

边界字符:头尾字符:

^ : ^root ------以root开头

$:false$ ------以false结尾

^$: 代表空行

[root@localhost tmp]# grep '^root' passwd.bak
[root@localhost tmp]# grep 'false$' passwd.bak

3:正则表达式的其它字符

*元字符:代表普通字符或者其它字符

元字符 描述
\w 小写 匹配任何字类字符,包括下划线([A-Z a-z0-9])
\W 大写 匹配任何非字类字符,包括下划线([ ^A-Z a-z0-9])
\b 代表单词的分隔
[root@localhost tmp]# grep 'x' passwd.bak     #会匹配x【密码】字段和单词中的x
[root@localhost tmp]# grep '\bx\b' passwd.bak      #把x当成一个单词,不会匹配单词中的x

4:正则表达式的字符组合

类型 表述 例子
字符串 'root','1000','m..c','[ A-Z] [ a-z] ' ' [ 0-9 ] [ 0-9 ] '
[root@localhost tmp]# grep '1000' passwd.bak 
oracle:x:1000:1000:oracle:/home/oracle:/bin/bash
[root@localhost tmp]# grep '[A-Z][a-z]'  passwd.bak  #匹配一个大写紧挨着一个小写---共2位字符
[root@localhost tmp]# grep '[0-9][0-9]'  passwd.bak  #匹配紧挨着的2位数字---共2位并且贪婪匹配

5:重复

?:0次或者1次匹配前面的字符或者子表达式

+:1次或多次匹配前面的字符或者子表达式

*:0次或多次匹配前面的字符或者子表达式

[root@localhost tmp]# grep '\(mail\)\?' passwd.bak    #注意\?,\+ 才是匹配重复

{n,m}:重复特定次数

?:{0,1}

+:{1,}

*:{0,}

[root@localhost tmp]# grep '[0-9]\{2,3\}'  passwd.bak    #:重复2到3次,除了()之外,其它都要转义\{\}

6:任意字符串

.* :代表任意字符串 eg: ^.* m.*c --------代表m开头c结尾,任意长度

​ m..c-----代表m开头c结尾,但只有4位长度


7:逻辑的表示

|:‘/bin(false|true)’

常见匹配模式:

posted @ 2019-10-21 23:35  Noob52037  阅读(132)  评论(0编辑  收藏  举报