免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4519 | 回复: 0
打印 上一主题 下一主题

grep命令中的全字匹配 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-15 09:41 |只看该作者 |倒序浏览

                                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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP