免费注册 查看新帖 |

Chinaunix

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

请教一个关于正则式的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-28 17:01 |只看该作者 |倒序浏览
1. grep -E "do[^*]*\{[^*]*\}[^*]*while[^*]*\([^*]*0[^*]*\)" ./include/asm-i386/* 可以工作,而grep -E "do*\{*\}*while*\(*0*\)" ./include/asm-i386/* 不行?
2. grep -E "do[^*]*{[^*]*}[^*]*while[^*]*\([^*]*0[^*]*\)" ./include/asm-i386/*也行,大括号没用转义?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-07-28 17:24 |只看该作者
egrep(grep -E) 的正则表达式元字符不支持\(\)和\{\}

论坛徽章:
0
3 [报告]
发表于 2006-07-28 17:30 |只看该作者

ps, 在RH linux下遇到的问题

grep -E "do*{*}*while*(*0*)" ./include/asm-i386/*也不行啊
ps, 在RH linux下遇到的问题

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-07-28 17:50 |只看该作者
正则表达式没学好。^_^
grep -E时:{}()是元字符,*也是元字符。
grep没有-E时{}()是普通字符,*仍旧是元字符。

论坛徽章:
0
5 [报告]
发表于 2006-08-01 17:25 |只看该作者

Thanks!

多谢!
是的,偶的正则式有待加强
*要配合具体的符号,表示0::max个符号,不能单独表达某个区域任意长度任意符号的意思。
可能应该是grep "do[ ]*{[ ]*}[ ]*while[ ]*([ ]*0[ ]*)" *或egrep "do[ ]*\{[ ]*\}[ ]*while[ ]*\([ ]*0[ ]*\)" *

论坛徽章:
0
6 [报告]
发表于 2006-08-01 21:11 |只看该作者
  1. [^*]*\{[^*]*\}[^*]*
复制代码


看得我头晕。。。。。。 什么意思?

论坛徽章:
0
7 [报告]
发表于 2006-08-02 10:24 |只看该作者
[^*]*可能是0::max个非'*'的字符串

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2006-08-02 11:01 |只看该作者
[^*]*匹配一切

论坛徽章:
0
9 [报告]
发表于 2006-08-03 14:12 |只看该作者
回7楼,好像不是那样滴([]里的*不是元字符?!):
-bash-3.00$ tail test.asm
804843c:       50                      push   %eax
804843d:       e8 00 00 00 00          call   8048442 <_fini+0xa>
8048442:       5b                      pop    %ebx
8048443:       81 c3 0e 11 00 00       add    $0x110e,%ebx
8048449:       e8 d2 fe ff ff          call   8048320 <__do_global_dtors_aux>
804844e:       58                      pop    %eax
804844f:       5b                      pop    %ebx
8048450:       c9                      leave  
8048451:       c3                      ret   
sdfjkdsf %$$%$ **Newman**
-bash-3.00$ egrep "[^*]*Newman[^*]" *
-bash-3.00$ egrep "[^_]*Newman[^_]" *
test.asm: sdfjkdsf %$$%$ **Newman**
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP