*:任意长度的任意字符。
?:任意单个字符
[]:匹配范围
[^]:排除匹配范围
[:alnum:]:所有字母和数字
[:alpha:]:所有字母
[:digit:]:所有数字
[:lower:]:所有小写字母
[:upper:]:所有大写字母
[:blank:]:空白字符和TAB制表符
[:space:]:包括空白字符、TAB制表符( )、换页(f)
[:cntrl:]:所有控制字符
[:graph:]:可打印并可看到的字符。空格是可打印的,但是不是可看到的。
[:print:]:所有可打印字符
[:punct:]:所有标点符号,非字母、数字、控制字符和space字符。
[:xdigit:]:十六进制数的字符。
.:表示匹配任意单个字符。
*:表示匹配前面的字符任意次,包括0次。
.*:表示匹配任意长度的任意字符。
?:可能需要使用反斜线进行转义才可以,表示的是前面的字符出现0次或1次。?
{n,m}:匹配前面字符出现n到m次。
{n,}:匹配前面字符出现n次以上。
{n}:匹配前面字符出现n次。
^:匹配行首,此字符后面的内容必须出现在行首。
$:匹配行尾,此字符后面的内容必须出现在行尾。
^$:匹配空白行。
[]:表示指定匹配范围内的任意单个字符。
[^]:表示指定范围外的任意单个字符。
注意:使用下面的匹配时,要使用两个方括号,如[[:alpha:]]
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:]
<:表示其后面的任意字符必须作为单词的首部出现。
>:表示其前面的任意字符必须作为单次的尾部出现。
上述的两个,也可以用来表示。
如:root表示root出现在词首。root表示root出现在词尾。
<root>:表示的root单次必须出现在词首和词尾。
():将字符串分组,作为一个整体。
字符匹配
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[-]:匹配[]中指定范围内的任意一个字符,要写成递增
POSIX字符类:
[:digit:]:匹配任意一个数字字符
[:lower:]:匹配小写字母
[:upper:]:匹配大写字母
[:alpha:]:匹配任意一个字母字符(包括大小写字母)
[:alnum:]:匹配任意一个字母或数字字符
[:space:]:匹配一个包括换行符、回车等在内的所有空白符
[:punct:]:匹配标点符号
:转义符,将特殊字符进行转义,忽略其特殊意义
匹配次数:
*:匹配前面的字符任意次
.*:任意长度的任意字符
?:匹配其前面的字符0或1次;即前面的可有可无
+:匹配其前面的字符至少1次;
{m}:匹配前面的字符m次;
{m,n}:匹配前面的字符至少m次,至多n次;
{0,n}:匹配前面的字符至多n次;
{m,}:匹配前面的字符至少m次;
位置锚定:
^:行首锚定;用于模式的最左侧;
$:行尾锚定;用于模式的最右侧;
^PATTERN$: 用于模式匹配整行;
^$: 空行;
^[[:space:]]*$:空白行
单词锚定:
< 或 :词首锚定;用于单词模式的左侧;
> 或 :词尾锚定;用于单词模式的右侧;
<PATTERN>:匹配整个单词;
分组:
():将一个或多个字符捆绑在一起,当作一个整体进行处理;
(xy)*abNote:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: 1, 2, 3, …
1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;
2:从左侧起,第:二个左括号以及与之匹配右括号之间的模式所匹配到的字符;
后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)
或者:
a|b
C|cat: C或cat
参考自:http://hezhanglinux.blog.51cto.com/10861477/1711113