首先:在linux中 ,正则表达式是针对文件内容而言的。查用在shell的grep,sed ,awk等相关命令之中。

正则表达式的元字符:

.  : 表示任意字符

字符次数锚定:

* : 表示* 之前的字符或模式出现任意次,其中包括0次

?:   表示?之前的字符出现0次或一次,需要注意的是,在linux中需要是\?。

\{m,n\}:表示其前面的字符或模式出现至少m次,至多n次

\{m,\}: 表示其前面的字符至少出现m次

\{0,n\}:表示其前面的字符至多出现n次

位置锚定:

^: 表示以其后面的字符开头

$:表示以其前面的字符结尾

^$: 表示匹配空白行

匹配单词:(需要注意单词的含义。root是单词,r..t 在linuxshell中不认为是单词)

\<word : 表示匹配word开头的单词。

word\>:   表示匹配word结尾的单词

\<word\>: 表示匹配完整的单词word

范围匹配:

[0-9]:表示匹配数字

[a-z]:表示匹配小写字母

[A-Z]:表示匹配大写字母

[[:punct:]]:表示匹配标点符号

[[:space:]]:表示匹配空白字符

[[:lower:]]: 表示匹配小写字母

[[:upper:]]:表示匹配大写字母

[[:alpha:]]:表示匹配字母,不区分大小写字母

[[:digit:]]:表示匹配数字

[[:alnum:]]:表示匹配数字字母

需要注意的是:范围匹配表示可以匹配范围中的一个字符。同时支持取反匹配。[^[::]]