我们在前面测试grep工具时,其中有一个 -E 选项,那如果将这个 -E 去掉,会出现什么现象呢?
echo "abcabcabcabcdef" | grep --color '(abc){3}'

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

本文介绍了Shell脚本中基本正则表达式和扩展正则表达式之间的区别。在基本正则中,特殊字符如?、+、{}、|、()需要转义才能表达其特殊含义,而在扩展正则中,这些字符直接表示特殊意义。grep工具的-E选项用于启用扩展正则匹配。同时,文章提到了如何在目标字符串包含特殊字符时进行匹配,并解释了的作用以及|作为析取符的意义。
最低0.47元/天 解锁文章
420

被折叠的 条评论
为什么被折叠?



