我们在前面测试grep工具时,其中有一个 -E 选项,那如果将这个 -E 去掉,会出现什么现象呢?
echo "abcabcabcabcdef" | grep --color '(abc){3}'
我们发现,去掉之后再进行匹配,就会出现不一样的结果,为了解释这个现象,我们这里要引入两个概念:
- 基本正则表达式
- 扩展正则表达式
这两者的区别是:正则表达式的扩展规范和基本规范基本相同。只是在基本规范下,有些字符(? + {} | () )应解释为普通字符,要表达上述特殊含义,则需要加 \ 转义。反之,在扩展规范下,? + {} | () 应被理解成特殊含义,要取其字面值,也要对其进行 \ 转义。
所以,grep工具带上 -E 选项,表示使用扩展正则来进行匹配,如没有,则表示使用基准正