正则表达式
2022-06-20
3W1H
1、什么是正则表达式?
作用和特殊字符一样。
正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
2、为的是提高效率,快速获取到想要的内容;
3、非常适合 三剑客(grep(egrep)、awk、sed) 命令;
4、怎么用
易混淆事项
1、和通配符区别。
2、开发人员正则,一般是 Perl 兼容正则表达式。
3、Linux 系统三剑客正则表达式******。
正则表达式环境配置
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
# 注意 LC ALL 环境变量的设置,建议为:
#《一配置后操作时不会出现异常匹配情况。小
cat >> /etc/profile <<EOF
export LC_ALL=C
EOF
source /etc/profile
正则表达式的分类
基本正则表达式
基本正则表达式(BRE, basic regular expression) BRE
对应的元字符有“^$. []*”。
字符 | 作用 |
---|---|
^ | 匹配开头 |
$ | 匹配结尾 |
^$ | 组合符,标识空行 |
. | 匹配任意一个且只有一个字符 |
\ | 转义字符,如\. 表示小数点 |
* | 匹配前一个字符(连续出现次数)0次或1次以上,⚠️:当重复0次的时候,表示啥也没有(空),即匹配所有内容 |
.* | 组合符,匹配所有内容 |
^.* | 组合字符,匹配以任何多个字符开头的内容 |
.*$ | 组合字符,任意多个字符结尾的内容 |
[abc] | 匹配[]集合内的任意一个字符a或b或c;[abc]也可写成[a-c] |
[^abc] | 匹配不包含^ 后的任意字符a或b或c,这里的 ^ 表示对[abc]的取反 |
扩展正则表达式
扩展正则表达式(ERE, extended regular expression) ERE
在 BRE 的基础上增加了“(){}?+|”等字符。
字符 | 作用 |
---|---|
+ | 匹配前一个字符1次或1次以上 |
[:/]+ | 匹配括号内的:或/1次或1次以上 |
? | 匹配前一个字符0次或1次 |
| | 表示或者,即同时过滤多个字符串 |
() | 分组过滤被括气来的东西表示一个整体,另外()的内容可以被后面的\n引用,n为数字,表示引用第几个括号的内容 |
\n | 引用前面()小括号里的内容,例如: (aa)\1, 匹配aaaa |
a{n,m} | 匹配前一个字符最少n次,最多m次 |
a{n,} | 匹配前一个字符最少n次 |
a{n} | 匹配前一个字符正好n次 |
a{,m} | 匹配前一个字符最多m次 |
grep 支持扩展正则表达式的三种方式:
1. grep 命令加 -E 参数即可支持扩展正则;
1. grep命令不加参数也可以使用扩展正则表达式的特殊字符,但有个条件,就是需要在使用的每个特殊的字符钱面加\反斜线;
1. egrep命令直接支持扩展正则;
预定义表达式
不重要,了解即可;
元字符表达式
不重要。了解即可