首先:在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:]]:表示匹配数字字母
需要注意的是:范围匹配表示可以匹配范围中的一个字符。同时支持取反匹配。[^[::]]