题目说不清楚,直接上例子.
我在"test"文件中写了一行文本用来测试grep命令.具体的命令就是grep 'o{2}' test (加了alias grep='grep --color=auto',所以下文中的红色字体就是本机实际匹配到的字符).
测试1:
[root@localhost ~]# grep 'o\{2\}' test
goo
gle
为test增添一个字符o之后,测试2:
[root@localhost ~]# grep 'o\{2\}' test
goo
ogle
继续添加多个o,测试3:
[root@localhost ~]# grep 'o\{2\}' test
goooooooooo
ogle
问题:为什么测试2和测试3中的最后一个o没显示出红色?
grep的man page中说
{n} The preceding item is matched exactly n times.
看起来没什么特别之处啊.
正则表达式的特性,已经匹配的内容不会重复进行匹配,所以你前面两个o
被匹配之后,就从第3个o
开始匹配,因为没有第4个o
组成o{2}
,就匹配失败了