谁能帮我讲讲在标量环境下“..”与“...”的区别

谁能帮我讲讲在标量环境下“..”与“...”的区别

昨天又看了一下书,还是不太明白

自己定一下,希望有高手帮忙解释一下
/pattern1/../pattern2/
如果pattern1在一行中匹配了,那么pattern2可以在这一行中继续尝试匹配,也就是说
pattern1和pattern2有可能在一行中都匹配
/pattern1/.../pattern2/
如果pattern1在一行中匹配了,pattern2就不会继续在这一行中尝试匹配,也就是说pattern1和pattern2不会在同一行中匹配

看这个例子就明白了

QUOTE:
kernel@fairland:~/chinaunix$ cat a
a b
c d
kernel@fairland:~/chinaunix$ perl -ne 'print if /a/../a/' a
a b
#第一个/a/在第一行匹配,第二个/a/也在第一行匹配
kernel@fairland:~/chinaunix$ perl -ne 'print if /a/.../a/' a
a b
c d
#第一个/a/在第一行匹配,第二个/a/没有匹配,因为第一个已经在第一行匹配了,所以第二个绝不会在第一行尝试匹配

谢谢啊,好像清楚一些了
这里perl -ne 'print if /a/../a/' a  和perl -ne 'print if /a/' a 有啥区别呢? 请教
这里perl -ne 'print if /a/../a/' a  和perl -ne 'print if /a/' a 有啥区别呢? 请教
.. 是范围操作符
又学到一招
回复3楼,我看了你的帖子完全不明白,你的例子跟你的描述不是自相矛盾么,不知道大家为什么会明白,能否讲清楚点?


QUOTE:
原帖由 dl0622 于 2008-10-25 10:12 发表
回复3楼,我看了你的帖子完全不明白,你的例子跟你的描述不是自相矛盾么,不知道大家为什么会明白,能否讲清楚点?

perl -ne 'print if /a/.../a/' a
会输出两个含a及其中间的行,因为没找到第二个,所以一直输出