【RHCA+】基本正则表达式

“ 目录:RHCA+ -> 4 正则表达式 -> 52 基本正则表达式 ”

POSIX基本正则表达式(BRE,Basic REGEXP)引擎

语法特点:在BRE中,元字符(如*、?、+、|、()等)在默认情况下不具有特殊含义,而是被当作普通字符处理。要使这些字符具有特殊含义,通常需要在它们前面加上反斜杠\进行转义。

用途:尽管功能相对有限,但BRE是许多早期Unix工具(如grep的默认模式)的基础。

字符

作用

a

精准匹配字母a(其他字母同例)

.

任意单个字符,且只能是一个字符;不匹配空行

*

匹配前一个字符零次或多次;默认贪婪模式:尽可能长地匹配

.*

匹配任意字符出现任意次数

\?

匹配前面的字符0或1次

\+

匹配前面的字符至少1次

[]

匹配集合内单个字符,中括号内为集合

[a-z]

匹配连续的字符串范围

[^]

否;对中括号内的集合取反

^

匹配字符串的开头

$

匹配字符串的结尾

^$

空行

^[[:space:]].*$

空白行

^PATTERN$

匹配整行

\< 或 \b

词首锚定,\b放单词模式的左侧

\> 或 \b

词尾锚定;\b放单词模式的右侧;例:\

\

匹配转义后的字符

\{n\}

匹配前一个字符重复n次

\{n,\}

匹配前一个字符至少重复n次

\{,n\}

匹配前面的字符至多n次

\{n,m\}

匹配前一个字符重复n到m次

\(\)

将 \( 和 \) 之间的内容为一个分组存储到保留空间,最多存储9个

\n:通过 \1 到 \9 调用保留空间中存储的内容,反向引用

\1:表示从左侧起第1个左括号以及与之匹配右括号之间的模式所匹配到的字符

\2:表示从左侧起第2个左括号以及与之匹配右括号之间的模式所匹配到的字符,以此类推

\&:表示前面的分组中所有字符

[root@wuzuniao ~]# cat -n a.txt #创建文件

1 a

2 b

3 c

4 1

5 2

6 3

7 11

8 22

9 33

10 1a

11 2b

12 3c

13 dddd

[root@wuzuniao ~]# grep b a.txt #过滤包含字母b的行

b

2b

[root@wuzuniao ~]# grep d..d a.txt #过滤有四个字符的字符串,其中开头和结尾必须是字母d,中间两位任意字符

dddd

[root@wuzuniao ~]# grep --color 11* a.txt #过滤出至少包含一个1的行,第二个1可出现零次或多次

1

11

1a

[root@wuzuniao ~]# grep --color [3-5] a.txt #匹配包含数字3-5这个范围内的行

3

33

3c

[root@wuzuniao ~]# grep --color [c-d] a.txt #匹配包含字母c-d这个范围的行

c

3c

dddd

[root@wuzuniao ~]# grep --color ^b a.txt #匹配以b字母开头的行

b

[root@wuzuniao ~]# grep --color c$ a.txt #匹配以c字母结尾的行

c

3c

[root@wuzuniao ~]# grep --color 1[^$] a.txt #匹配以1开头,后续跟了其他字符的行;也就是这里把结束符排除掉了

11

1a

[root@wuzuniao ~]# grep --color 1[^1$] a.txt #匹配以1开头,后面不跟1和结束符的行

1a

[root@wuzuniao ~]# grep --color '3\{1,2\}' a.txt #匹配数字3出现过1次到2次的行

3

33

3c

[root@wuzuniao ~]# grep --color "\(2\).*\1" a.txt #匹配2出现2次的行;中间匹配任意字符,前后各匹配一次2

22

[root@wuzuniao ~]# grep --color "\(d\)\(d\).*\2\1" a.txt #匹配包含两个dd的行

dddd

[root@wuzuniao ~]# grep --color ^$ a.txt #匹配空白行

[root@wuzuniao ~]# grep -v --color ^$ a.txt #匹配非空白行;这里的--color参数也会取反,不显示颜色

a

b

c

1

2

3

11

22

33

1a

2b

3c

dddd

[root@wuzuniao ~]#