免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: freeman731
打印 上一主题 下一主题

egrep 的模式匹配问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-10-17 14:38 |只看该作者
结论 :

这种表达式'([CHAR1]|[CHAR2]){NUMBER}' 在 grep 2.5.4是危险的.

[ 本帖最后由 freeman731 于 2009-10-17 14:40 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2009-10-17 14:56 |只看该作者

  1. #有新发现了.
  2. hello@world:~$locale
  3. LANG=en_US         
  4. LC_CTYPE="zh_CN.UTF-8"
  5. LC_NUMERIC="zh_CN.UTF-8"
  6. LC_TIME="zh_CN.UTF-8"   
  7. LC_COLLATE="zh_CN.UTF-8"
  8. LC_MONETARY="zh_CN.UTF-8"
  9. LC_MESSAGES="zh_CN.UTF-8"
  10. LC_PAPER="zh_CN.UTF-8"
  11. LC_NAME="zh_CN.UTF-8"
  12. LC_ADDRESS="zh_CN.UTF-8"
  13. LC_TELEPHONE="zh_CN.UTF-8"
  14. LC_MEASUREMENT="zh_CN.UTF-8"
  15. LC_IDENTIFICATION="zh_CN.UTF-8"
  16. LC_ALL=zh_CN.UTF-8
  17. hello@world:~$echo "abc222ddd255" | egrep -o '([abc]|25[5]){2}'
  18. hello@world:~$export LC_ALL=C
  19. hello@world:~$locale
  20. LANG=en_US
  21. LC_CTYPE="C"
  22. LC_NUMERIC="C"
  23. LC_TIME="C"
  24. LC_COLLATE="C"
  25. LC_MONETARY="C"
  26. LC_MESSAGES="C"
  27. LC_PAPER="C"
  28. LC_NAME="C"
  29. LC_ADDRESS="C"
  30. LC_TELEPHONE="C"
  31. LC_MEASUREMENT="C"
  32. LC_IDENTIFICATION="C"
  33. LC_ALL=C
  34. hello@world:~$echo "abc222ddd255" | egrep -o '([abc]|25[5]){2}'
  35. ab
  36. hello@world:~$

  37. # egrep 的模式匹配和locale有关??
复制代码

论坛徽章:
0
23 [报告]
发表于 2009-10-17 14:59 |只看该作者
22楼使用的grep 版本是 2.5.4

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
24 [报告]
发表于 2009-10-17 19:22 |只看该作者

回复 #22 freeman731 的帖子

有关

论坛徽章:
0
25 [报告]
发表于 2009-10-17 21:12 |只看该作者
man grep 查阅了一下, 确实如此。

论坛徽章:
0
26 [报告]
发表于 2009-10-17 23:19 |只看该作者

回复 #20 freeman731 的帖子

不等价吧,第三四条abc与后面的255何干?

  1. [rockfall@Rocfall ~]$echo "abc222ddd255255255255" | egrep -o '([abc]|25[5]){3}'
  2. abc
  3. 255255255
  4. [rockfall@Rocfall ~]$echo "abc222ddd255255255255" | egrep -o '([abc]|255){3}'
  5. abc
  6. 255255255
  7. [rockfall@Rocfall ~]$echo "abc222ddd255255" | egrep -o '([abc]|25[5]){3}'
  8. [rockfall@Rocfall ~]$echo "abc222ddd255255" | egrep -o '([abc]|255){3}'
  9. abc      
  10. [rockfall@Rocfall ~]$
复制代码

论坛徽章:
0
27 [报告]
发表于 2009-10-20 16:33 |只看该作者
egrep 2.5.3也完全正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP