Day13-预习笔记-正则表达式

一、为何使用正则表达式

给定一个正则表达式和另一个字符串,我们可以达到如下目的:

1)给定的字符串是否符合正则表达式的过滤逻辑(称作 匹配 )

2)可以通过正则表达式,从字符串获得我们想要的特定部分

3)取出文件中正确的身份证号码

4)帮助我们快速过滤

二、正则表达式分类

1/POSXI规范将正则表达式分为两种:

1)基本正则表达式(BRE,basic regular expression)

2)扩展正则表达式(ERE,extended regular expression)---高级功能

2、BRE与ERE区别:

1)仅仅是元字符不同:

BRE只承认的元字符有:^ $ . [] *  其他字符识别为普通字符。

ERE则添加了() {} ? + |等。

2) 只有在用反斜线“\”进行转义的情况下,字符() {} 才会被BRE当做元字符处理,

而ERE中,任何元字符前面加上反斜线都会被当做普通字符来出来。

三、正则与通配符

1、通配符

作用:查找文件名

支持的命令:Linux大部分命令都支持,以.txt结尾的文件

2、正则

作用:在文件中过滤内容

支持的命令:三剑客 sed,grep,awk    python  Java

四、使用正则表达式注意事项

1、正则神坑--中文符号

2、grep/egrep添加别名(CentOS 7 可不配置)

alisa grep='grep--color=auto'

alisa egrep='egrep--color=auto'

cat >> /etc/profile<

alisa grep='grep--color=auto'

alisa egrep='egrep--color=auto'

EOF

source  /etc/profile

五、基础正则

正则表达式:为处理大量的字符串而定义的一套规则和方法,通过定义这些的特殊符号的辅助,系统管理员可以快速过滤,替换或输出需要的字符串。

1、^  。。。开头

grep' ^I' oldboy.txt

过滤出以I开头的行。

2、$ 。。。结尾

grep'$m' oldboy.txt

过滤出以m结尾的行

3、^$ 行 -n显示行号

grep -n '^$' oldboy.txt

过滤出空行,并且显示出行号

4、. 任意一个字符,不会匹配空行

grep'.'oldboy.txt

显示所有字符,不包括空行

5、\ 转义字符,还原命令本来的含义

6、* 前一个字符连续出现了0次或0次以上(逐行匹配)

假如匹配0个的时候,实际就是 空 ,什么都是空的情况下默认匹配全文内容,然后在匹配大于0的情况

7、.* 所有内容:任何符号(包含空行)

例如: 匹配所有内容到0开头的内容

grep '^.0' 

匹配结尾内容以m任意的所有内容

grep ‘.*m.$’

匹配任意开头且以!结尾的行

grep '^..*!$'

8、[] 

1) [abc] 相当于是一个符号,匹配内容为a,b,c的行

2) [0-9] 匹配所有的数字字符

3)[a-z] 匹配所有的小写字母

4)[A-Z] 匹配所有的大写字母

5)[a-zA-Z] [a-Z] 匹配所有的字母

9、加[]不加[]的区别

加[]:括号内字符单个字符过滤

不加[]:整体过滤

10、[^abc] 相当于一个符号 过滤所有不包含a,b,c的行

六、扩展正则

1、+ 前一个字符连续出现1次或1次以上

2、| 或者

3、() 表示一个整体,反向引用

4、反向引用

sed 在 's#()#\1#g' 后两个#之间使用\1 引用前面括号的内容

5、{} 

{n,m} 匹配其前面的字符至少n次至多m次

6、?  匹配前一个字符0次或1次

你可能感兴趣的:(Day13-预习笔记-正则表达式)