目录
正则表达式分类
正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:
- Basic REGEXP(基本正则表达式)
- Extended REGEXP(扩展正则表达式)
基本正则表达式
//元字符
. //任意单个字符
[] //匹配指定范围内的任意单个字符
[^] //匹配指定范围外的任意单个字符
//匹配次数(贪婪模式)
* //匹配其前面的任意单个字符任意次
.* //任意长度的任意字符
\? //匹配其前面的任意单个字符1次或0次
\+ //匹配其前面的任意单个字符至少1次
\{m,n\} //匹配其前面的任意单个字符至少m次,至多n次
//位置锚定
^ //锚定行首,此字符后面的任意单个字符必须出现在行首
$ //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$ //空白行
\<或\b //锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
/分组
\(\)
例:\(ab\)*
//后向引用
\1 //引用第一个左括号以及与之对应的右括号所包括的所有内容
\2 //引用第二个左括号以及与之对应的右括号所包括的所有内容
扩展正则表达式
//字符匹配
. //匹配任意单个字符
[] //匹配指定范围内的任意单个字符
[^] //匹配指定范围外的任意单个字符
//次数匹配
* //匹配其前面的任意单个字符任意次
? //匹配其前面的任意单个字符1次或0次
+ //匹配其前面的任意单个字符至少1次
{m,n} //匹配其前面的任意单个字符至少m次,至多n次
//位置锚定
^ //锚定行首,此字符后面的任意单个字符必须出现在行首
$ //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$ //空白行
\<或\b //锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
//分组
() //分组
\1,\2,\3,....
例:(ab)*
//后向引用
\1 //引用第一个左括号以及与之对应的右括号所包括的所有内容
\2 //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
| //or 默认匹配|的整个左侧或者整个右侧的内容
//例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at
元字符匹配
字符 | 释义 |
---|---|
. | 任意单个字符 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
[root@localhost 1]# ls
a aa aaa aab aabb ab abb b bb bbb c d e f g h
[root@localhost 1]# ls | grep '^.$'
a
b
c
d
e
f
g
h
[root@localhost 1]# ls | grep '^..$'
aa
ab
bb
[root@localhost 1]# ls | grep '^...$'
aaa
aab
abb
bbb
[root@localhost 1]# ls
1 3 5 7 9 aa aab ab b bbb d f h
2 4 6 8 a aaa aabb abb bb c e g
[root@localhost 1]# ls | grep '^[abchijk]'
a
aa
aaa
aab
aabb
ab
abb
b
bb
bbb
c
h
[root@localhost 1]# ls | grep '^[abchijk]$'
a
b
c
h
[root@localhost 1]# ls | grep '^[a-h]$'
a
b
c
d
e
f
g
h
[root@localhost 1]# ls | grep '^[a-j]$'
a
b
c
d
e
f
g
h
[root@localhost 1]# ls | grep '^[-1-9a-j-]$'
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
g
h
[root@localhost 1]# ls | grep '^[-19a-j-]$'
1
9
a
b
c
d
e
f
g
h
[root@localhost 1]# ls | grep '^[1-5]$'
1
2
3
4
5
[root@localhost 1]# ls | grep '^[^1-5]$'
6
7
8
9
a
b
c
d
e
f
g
h
匹配次数
多用于重复匹配字符的次数。
字符 | 释义 |
---|---|
* | 匹配其前面的任意单个字符任意次 |
.* | 任意长度的任意字符 |
? | 匹配其前面的任意单个字符1次或0次 |
+ | 匹配其前面的任意单个字符至少1次 |
{m,n} | 匹配其前面的任意单个字符至少m次,至多n次 |
可以匹配0次或者任意次,也可能为空
[root@localhost 1]# ls
1 3 5 7 9 aa aab ab b bbb d f h
2 4 6 8 a aaa aabb abb bb c e g
[root@localhost 1]# ls | grep '^a*b$'
aab
ab
b
[root@localhost 1]# ls | grep '^a*b*$'
a
aa
aaa
aab
aabb
ab
abb
b
bb
bbb
匹配到以a开头的任意长度的任意字符
[root@localhost 1]# ls | grep '^a.*$'
a
aa
aaa
aab
aabb
ab
abb
匹配0次或者1次
[root@localhost 1]# ls | grep '^ab\?$'
a
ab
匹配前面字符至少1次,至多任意次
[root@localhost 1]# ls | grep '^ab\+$'
ab
abb
匹配单个字符至少1次,至多任意次
[root@localhost 1]# ls | grep '^ab\{1,1\}$'
ab
[root@localhost 1]# ls | grep '^ab\{1,2\}$'
ab
abb
位置锚定
字符 | 释义 |
---|---|
^ | 锚定行首,此字符后面的任意单个字符必须出现在行首 |
$ | 锚定行尾,此字符前面的任意单个字符必须出现在行尾 |
^$ | 表示空白行 |
\<或\b | 锚定词首,其后面的任意单个字符必须作为单词首部出现 |
\>或\b | 锚定词尾,其前面的任意单个字符必须作为单词尾部出现 |