正则表达式

2024-08-07 13:40:52 浏览数 (4)

分类

  • 基本正则表达式(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

向后引用

字符

说明

备注

|

代码语言:javascript复制
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_]

1 人点赞