下面为 linux 三剑客都通用的正则,有基础正则和扩展正则,其中 grep 和 sed 需要加上
-E
才能使用扩展正则,或者不用 -E
,直接对扩展正则中的特殊字符加上 \
进行转义也行。awk 倒是很方便,不用加 -E
直接使用扩展正则
-
基础正则中
^$.*[]
是元字符 -
扩展正则中
ERE: ^$.*[]+(){}?|
都是元字符,比基础正则多出了+(){}?|
# 以什么开头,a 打头
^
^a
# 以什么结尾,a 结尾
$
a$
# 表示空行
^$
# 表示任一个字符
.
# 表示区间,匹配到含有 a c d,匹配所有数字,匹配所有大小写字母
[]
[acd]
[0-9]
[a-Z]
#匹配不在这个范围的字符,这里的 ^ 可不是打头了而是有取反的意味
[^a-z]
# 表示匹配前一个字符可出现 0 个或多个,a 出现 0 次或多次
*
ba*
扩展正则(ERE)
# 非贪婪匹配,上一个字符 a 出现或没有出现
?
ba?
# 匹配前一个字母出现一个或多个,匹配 a 出现一个或多个
+
ba+
# 分组匹配,小括号中是一个整体
()
te(s|x)t
# 范围约束,匹配 a 最少 1 次,最多连续出现 5 次,如 a,aa,aaa,aaaa,aaaaa
{}
n{1,5}
# 匹配多个表达式的任何一个,匹配 e 或 l
|
e|l
其他元字符
# 匹配一个空格
\s
# 匹配出单词
\b
# 举例,匹配出“a hello b”中的hello单词我们怎么做
# 这样写会把两边空格也输出,输出“ hello ”
\shello\s
# 这样写可以输出“hello”
\bhello\b
# 表示一个数字,等价于 [0-9]
\d