分类
- 基本正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
- 扩展正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
- Perl 正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)
Linux 常用工具与正则的关系
- grep 是一个文本过滤工具,它是基于行过滤的 grep 指令后不跟任何参数,默认使用基本正则 grep 指令后跟 “-E” 参数,使用扩展正则,与 egrep 等效 grep 指令后跟 “-P” 参数,使用 Perl 正则
- sed 指令后不跟任何参数,使用基本正则,默认使用基本正则 指令后跟 “-r” 参数,使用扩展正则
- awk 默认使用扩展正则
基本正则表达式
字符匹配
字符 | 说明 | 备注 |
---|---|---|
. | 匹配任意单个字符 | |
[ ] | 匹配指定范围内的任意单个字符 | |
[^ ] | 匹配指定范围外的任意单个字符 | |
[:alnum:] | 匹配任意数字或字母 | |
[:alpha:] | 匹配任意英文大小写字母 | |
[:upper:] | 匹配任意大写字母 | 与 [A-Z] 等效 |
[:lower:] | 匹配任意小写字母 | 与 [a-z] 等效 |
[:blank:] | 匹配空白字符(空格和制表符) | |
[:space:] | 匹配任意空白字符,包括空格或 tab 键 | |
[:cntrl:] | 匹配不可打印的控制字符(退格、删除) | |
[:digit:] | 匹配 0-9 之间的任意单个数字 | 与 [0-9] 等效 |
[:xdigit:] | 匹配十六进制数字 | |
[:graph:] | 匹配可打印的非空白字符 | |
[:print:] | 匹配可打印字符 | |
[:punct:] | 匹配任意标点符号 | |
[^[:alpha:]] | 匹配单个非字母字符 | |
[^[:digit:]] | 匹配单个非数字字符 |
次数匹配
字符 | 说明 | 备注 |
---|---|---|
* | 前面的字符出现任意次,包括 0 次 | |
.* | 任意长度的任意字符 | |
? | 匹配前面的字符 0 次或 1 次 | |
| 匹配前面的字符至少一次 | |
{n} | 匹配前面的字符 n 次,精确匹配 | |
{,n} | 匹配前面的字符至多 nu 次 | |
{n,} | 匹配前面的字符至少 n 次 | |
{m,n} | 匹配前面的字符至少 m 次,至多 n 次 |
位置锚定
字符 | 说明 | 备注 |
---|---|---|
^ | 锚定行首 | |
$ | 锚定行尾 | |
^$ | 匹配空行 | |
< 或 b | 锚定词首 | |
> 或 b | 锚定词尾 | |
< > | 匹配整个单词 | |
B | 匹配非单词边界,与 b 相反 |
分组引用
字符 | 说明 | 备注 |
---|---|---|
( ) | 分组 | |
$1,$2 | 引用 | 在分组中,一个括号为一组,$1 开始,$2,$3… |
扩展正则表达式
字符匹配
与基本正则表达式相同
次数匹配
字符 | 说明 | 备注 |
---|---|---|
* | 匹配前面字符任意次,包括0次 | |
.* | 匹配任意长度任意字符 | |
? | 匹配前面字符0次或1次 | |
| 匹配前面字符至少一次 | |
{m} | 匹配前面字符m次 | |
{m,n} | 匹配前面字符至少m次,至多n次 |
位置锚定
与基本正则表达式相同
分组
字符 | 说明 | 备注 |
---|---|---|
( ) | 分组 | |
$1,$2 | 向后引用 |
或
字符 | 说明 | 备注 |
---|---|---|
| | 或 |
a|b # a或b
C|cat # C或cat
(C|c)at # Cat或cat
Perl 正则表达式
字符 | 说明 | 备注 |
---|---|---|
d | 匹配任意单个0-9的数字 | |
D | 匹配任意单个非数字字符 | |
t | 匹配单个横向制表符,相当于一个tab键 | |
s | 匹配单个空白字符,包括空格、tab键 | |
S | 匹配单个非空白字符 | |
n | 匹配换行符 | |
w | 匹配 [a-zA-Z0-9_] | |
W | 匹配 [^a-zA-Z0-9_] |