免费注册 查看新帖 |

Chinaunix

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

m//在列表上下文中的返回值问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-04-16 15:37 |只看该作者
小弟对churchmice 的敬仰犹如滔滔江水啊!

不错,搂主这个问题提的真不错,学到很多东西。

请问churchmice 兄,这些内容是在哪儿看到的呢?

论坛徽章:
0
22 [报告]
发表于 2008-04-16 15:45 |只看该作者
原帖由 andy820303 于 2008-4-16 15:37 发表
小弟对churchmice 的敬仰犹如滔滔江水啊!

不错,搂主这个问题提的真不错,学到很多东西。

请问churchmice 兄,这些内容是在哪儿看到的呢?

learning perl
mastering regular expression

论坛徽章:
0
23 [报告]
发表于 2008-04-17 09:47 |只看该作者
原帖由 churchmice 于 2008-4-16 15:26 发表

post to Larry Wall
其实只要理解了正则引擎的backtrace(回朔),这样也是可以理解的
对于$_="OneoNeonE"
使用模式(one)*/i
1.正则引擎从字符串的头部开始
2.由于(one)*也匹配空,所以引擎创建 state1,这个 ...


这个让我也理解了一些

论坛徽章:
0
24 [报告]
发表于 2008-04-17 11:28 |只看该作者
多谢了!

论坛徽章:
0
25 [报告]
发表于 2008-04-17 12:17 |只看该作者

回复 #1 sosogh 的帖子

教堂鼠兄已经指出是哪本书了,大家自己去看吧。每个人的理解都不同,但效果是一样的。
多读书没坏处。

论坛徽章:
0
26 [报告]
发表于 2008-04-20 02:11 |只看该作者
原帖由 churchmice 于 2008-4-16 15:07 发表
至于具体的匹配过程我是这样理解的,
1.一开始看到(one)*,所以整个$_都被匹配了,这个时候返回给@data的值是"onE",因为用了捕捉的(),所以m//g的返回内容是()中捕获的内容
2.由于整个m//g,所以引擎尝试再次匹配, ...



谢谢你的指点

论坛徽章:
0
27 [报告]
发表于 2008-04-20 02:14 |只看该作者
原帖由 churchmice 于 2008-4-16 15:26 发表

post to Larry Wall
其实只要理解了正则引擎的backtrace(回朔),这样也是可以理解的
对于$_="OneoNeonE"
使用模式(one)*/i
1.正则引擎从字符串的头部开始
2.由于(one)*也匹配空,所以引擎创建 state1,这个 ...


为什么第二句:
2.由于(one)*也匹配空,所以引擎创建 state1,这个state包含了匹配的内容,这里就是null


不是放到匹配过程的最后一步(作为第5点)而作为第2点?这个null不是由最后的空字符所引起的吗?

[ 本帖最后由 sosogh 于 2008-4-20 02:15 编辑 ]

论坛徽章:
0
28 [报告]
发表于 2008-04-20 08:23 |只看该作者
原帖由 sosogh 于 2008-4-20 02:14 发表


为什么第二句:
2.由于(one)*也匹配空,所以引擎创建 state1,这个state包含了匹配的内容,这里就是null


不是放到匹配过程的最后一步(作为第5点)而作为第2点?这个null不是由最后的空字符所引起的吗?

这里的1,2,3,4,5,6步的结果从大的方面来说只是进行了一次匹配(1,2,3,4,5,6只是具体的back trace的过程),匹配了"OneoNeonE",同时返回了onE
然后正则引擎看到/m修饰,再从前一次成功匹配的结尾,也就是$_的末尾尝试第二次的匹配,这个过程和前面的1,2,3,4,5,6类似,但是匹配到的结果是null,同时返回的也是null
然后引擎尝试再次匹配,但是上一次成功匹配的位置还是$_的结尾,这样下去会死循环,因而正则引擎便要跳出这个循环,所以不再进行匹配

论坛徽章:
0
29 [报告]
发表于 2008-04-20 08:58 |只看该作者
看样子还是要好好学学正则表达式了!

论坛徽章:
0
30 [报告]
发表于 2008-04-22 11:03 |只看该作者
经典
赶紧收藏
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP