- 论坛徽章:
- 0
|
grep命令中的-w选项,以及其中正则表达式的\b, \都可以全字区配(整字匹配).那它们有什么区别呢?
先要明确“全字匹配”的含义。“全字匹配”是指匹配的部分两边没有word constituent(字母、数字和下划线),而不是要求匹配的部分全部由word constituent组成。例如, 在"@@hello@@""查找'@hello@'的时候,是满足全字匹配的,因为它两边都是@,而@不是word constituent.
-w 是指与整个正则表达式匹配的部分是"全字匹配"
\b和\不要求与整个正则表达式怎么样,而只分别要求在两个\b和\之间的要是"全字匹配".此外,\b表示的是 the empty string at the edge of a word,而\ RESPECTIVELY match the empty string at the beginning and end of a word. 所以,在"@@hello@@""查找'@hello@'的时候,用-w可以匹配,但是用\b或\都不可以,因为夹在两个@之间的empty string不是word的edge,也不是word的beginning或ending. 同时要注意,红色部分说明了\和\b的不同. 这点看下面例子:
(下面几行保存在文件grep.test里)
kk@bb
kk@abb
grep '\b.bb\b' grep.test 可以在上面两行找到匹配,而grep '\' grep.test只能在第二行找到匹配.用\b的时候,在第一行里,正则表达式里的"."匹配了@.左边的\b匹配的是kk后面的empty string;第二行里,"."匹配了a,左边的\b匹配的是abb前面的empty string. 而用\的时候,第一行kk后面的empty string不能与\的要求的具体性是逐步上升的
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/83149/showart_1797689.html |
|