1.1 正则表达式介绍
正则表达式就是为了处理大量的文本|字符串而定义的一套规则和模板。
通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。
Linux正则表达式一般以行为单位处理。
正则表达式应用非常广泛,存在于各种语言中:php perl Python 等。
现在学的是Linux中的正则表达式,最常应用正则表达式的命令是linux三剑客:grep(egrep),sed,awk。
Linux系统开发: 学习linux三剑客(awk、sed、grep)(上)
Linux系统开发: 学习linux三剑客(awk、sed、grep)(下)
正则表达式是一个模版,这个模版是由一些普通字符和一些元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
在少数情况下,正则表达式可能失效,多数与字符集有关。
1.2 区分通配符与正则表达式
这里一定要弄清楚正则表达式和linux下使用的通配符有本质区别。
正则表达式用来找:【文件】内容,文本,字符串。一般只有三剑客支持。
示例:
#grep 123* demo.c 123* 则表明匹配12或1234/1235等字符串,但是不能匹配123
通配符用来找:文件目录名,普通命令都支持。
示例:
#ls * 表明递归列出当前目录下的所有不以.号开头的文件信息
在三剑客awk,sed,grep,egrep都是正则表达式,其他都是通配符
1.3 正则表达式的分类
基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)
扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)
Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs)
1.3.1 基本的正则表达式
只有在用反斜杠\进行转义的情况下,字符(),{}才会在BRE被当作元字符处理,而ERE中,任何元符号前面加上反斜杠反而会使其被当作普通字符来处理。所以ERE中直接使用(),{},而BRE则 ,\{\}
grep中调用-E参数指定使用扩展正则表达式。
sed中调用-r参数指定使用扩展正则表达式。
或者直接使用egrep。
1.3.2 POSIX字符类
POSIX字符类是一个形如[:...:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围。
注意运用时还得在外层加一对[]号。
1.3.3 Perl的正则表达式: 元字符
元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。