首页 > 为什么grep命令限定连续RE字符范围字符'{}'不能检测到最后一个匹配字符?

为什么grep命令限定连续RE字符范围字符'{}'不能检测到最后一个匹配字符?

题目说不清楚,直接上例子.

我在"test"文件中写了一行文本用来测试grep命令.具体的命令就是grep 'o{2}' test (加了alias grep='grep --color=auto',所以下文中的红色字体就是本机实际匹配到的字符).

测试1:
[root@localhost ~]# grep 'o\{2\}' test
google

为test增添一个字符o之后,测试2:
[root@localhost ~]# grep 'o\{2\}' test
gooogle

继续添加多个o,测试3:
[root@localhost ~]# grep 'o\{2\}' test
gooooooooooogle


问题:为什么测试2和测试3中的最后一个o没显示出红色?


grep的man page中说

{n} The preceding item is matched exactly n times.

看起来没什么特别之处啊.


正则表达式的特性,已经匹配的内容不会重复进行匹配,所以你前面两个o被匹配之后,就从第3个o开始匹配,因为没有第4个o组成o{2},就匹配失败了

【热门文章】
【热门文章】