正则表达式:Regual Expression,REGEXP
由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或调配的功能
分两类:
1.基本正则表达式:BRE
2.扩展正则表达式:ERE
正则表达式的意义
处理大量的字符串处理文本通过特殊符号的辅助,可以让Linux管理员快速过滤、替换、处理所需要的字符串、文本、让工作高效。
通常Linux运维工作,都是面临大量带有字符串的内容,如
配置文件程序代码命令输出结果日志文件且此类字符串内容,我们常会有特定的需要,查找出符合工作需要的特定的字符串,因此正则表达式就出现了
正则表达式是一套规则和方法正则工作时以单位进行,一次处理一行正则表达式化繁为简,提高工作效率Linux仅受三剑客(sed、awk、grep)支持,其他命令无法使用正则表达式应用非常广泛,应用在如Python、Java、Perl等,Linux下普通命令无法使用正则表达式的,只能使用三剑客。
通配符是大部分普通命令都支持的,用于查找文件或目录,而正则表达式是通过三剑客命令在文件(数据流)中过滤内容的。
Linux三剑客
文本处理工具,均支持正则表达式引擎
grep:文本过滤工具,(模式:pattern)工具sed:stream editor,流编辑器:文本编辑工具awk:Linux的文本报告生成器(格式化文本),Linux上是gawk
正则表达式的分类
Linux三剑客主要分类
基本正则表达式(BRE、basic regular expression)BRE对应元字符有^ $ . [ ] *
扩展正则表达式(ERE、extended regular expression)ERE在BRE基础上,增加上() {} ? + | 等字符
基本正则表达式BRE集合
匹配字符匹配次数位置锚定
符号 | 作用 |
---|---|
^ | 尖角号,用于模式的最左侧,如"^oldboy",匹配以oldbody单词开头的行 |
$ | 美元符,用于模式的最右侧,如"oldboy$",表示以oldboy结尾的行 |
^$ | 组合符,表示空行 |
. | 匹配任意一个且只有一个字符,不能匹配空行 |
\ | 转义字符,让特殊含义的字符,现出原形,还原本意,例如 \.代表小数点 |
* | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
.* | 组合符,匹配所有内容 |
^.* | 组合符,匹配任意多个字符开头的内容 |
.*$ | 组合符,匹配任意多个字符结尾的内容 |
[abc] | 匹配[]集合内的任意一个字符,a或b或c,可以写成[a-c] |
[^abc] | 匹配除了^后面的任意字符,a或b或c,^表示对[abc]取反 |
扩展正则表达式ERE集合
扩展正则必须用grep -E才能生效
字符 | 作用 |
---|---|
+ | 匹配前一个字符1次或多次 |
[:/]+ | 匹配括号内的":"或者"/"字符1次或多次 |
? | 匹配前一个字符0次或1次 |
| | 表示或者,同时过滤多个字符串 |
() | 分组过滤,被括起来的内容表示一个整体 |
a{n,m} | 匹配前一个字符最少n次,最多m次 |
a{n,} | 匹配前一个字符最少n次 |
a{n} | 匹配前一个字符正好n次 |
a{,m} | 匹配前一个字符最多m次 |
Tip:
1. grep命令 需要使用参数 -E即可支持正则表达式
2. egrep不推荐使用,使用grep -E替代
3. grep不加参数,得在特殊字符前面加"\"反斜杠,识别为正则
[adc]中括号
中括号表达式,[abc]表示匹配中括号任意一个字符,a或b或c,常见形式如下
[a-z]匹配所有小写单个字母[A-Z]匹配所有单个大写字母[a-zA-Z]匹配所有单个大小写字母[0-9]匹配所有单个数字[a-zA-Z0-9]匹配所有的数字和 字母
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)