正则表达式

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命令直接支持扩展正则;







预定义表达式

不重要,了解即可;

image-20220620191856939

元字符表达式

不重要。了解即可

image-20220620191946786