免费注册 查看新帖 |

Chinaunix

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

正则表达式奇怪的问题 [复制链接]

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

  1. 文件p包含以下内容

  2. scout
  3. shout
  4. bought
  5. 12345678
  6. 1233333
  7. 12344
  8. 1233322

  9. shizhi@PSECNKBSUSE:~> grep "1*" g
  10. scout
  11. shout
  12. bought
  13. 12345678
  14. 1233333
  15. 12344
  16. 1233322

  17. shizhi@PSECNKBSUSE:~> grep 1* g
  18. 12345678
  19. 1233333
  20. 12344
  21. 1233322

  22. shizhi@PSECNKBSUSE:~> grep '^1234*' g
  23. 12345678
  24. 1233333
  25. 12344
  26. 1233322
  27. 好像*号能忽略前面的字符,并且有引号和没引号结果还不一样。貌似没引号时结果是对的。

复制代码

论坛徽章:
0
2 [报告]
发表于 2007-06-20 09:42 |只看该作者
try grep '1.*' g

论坛徽章:
0
3 [报告]
发表于 2007-06-20 09:46 |只看该作者
能说明下问题的根源马

论坛徽章:
0
4 [报告]
发表于 2007-06-20 09:47 |只看该作者
If you didn't add '.', your expression means "display the line containing 0 or more 1"
".":any character
"*": 0 or more matches

论坛徽章:
0
5 [报告]
发表于 2007-06-20 09:51 |只看该作者
*表明引用前面的引导字符0到多次,这就有你所说的可以忽略前面的字符的效果了。
"1*" , 表明1可以出现0次到多次 当然所有的都能匹配
另外我依稀记得不用引号似乎不能正确使用正则表达式需要的某些特殊字符,如*,\,等, (因为shell会先处理一趟,然后就乱套了) 所以很可能不能正确处理。例如在我的环境下grep 1* p就得不到任何内容 而grep 1.* p却又能得到合条件的内容
最后一条把1233333选进来同理当然OK。。。

论坛徽章:
0
6 [报告]
发表于 2007-06-20 09:58 |只看该作者
搞清楚什么是glob和regex
把字符串放到引号里 对regex的解析是grep的而不是shell的工作
楼上已经说了*的用法了

论坛徽章:
0
7 [报告]
发表于 2007-06-20 10:16 |只看该作者
随便问下,除了". ","*" ,里面有没有"+"这个符号啊

论坛徽章:
0
8 [报告]
发表于 2007-06-20 10:36 |只看该作者
多谢各位解释
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP