如何匹配两个空行之间的行?(结帖)

最后说一下/c的作用,/c就是continue的意思
本来如果在m//g的时候匹配不成功则pos会被reset成undef
但是如果是m//gc的时候,如果匹配不成功则pos是不会发生变化的

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
print "Test without /c modifier \n";
$_ = "this is a test";
/^this/g;
print "now the pos is ",pos,"\n";
/canotmatch/g;
print "now the pos is ",pos,"\n";


print "Test with /c modifier \n";
$_ = "this is a test";
/^this/g;
print "now the pos is ",pos,"\n";
/canotmatch/gc;
print "now the pos is ",pos,"\n";



QUOTE:
<lig@other-server:~/chinaunix>$ ./continue
Test without /c modifier
now the pos is 4
Use of uninitialized value in print at ./continue line 9.
now the pos is
Test with /c modifier
now the pos is 4
now the pos is 4

最后,可以用mastering regex里面的一张表来总结一下
Type of match        Where match starts                   pos upon success        pos upon failure
m/⋯/                   start of string (pos ignored)        reset to undef                    reset to undef
m/⋯/g                   starts at target's pos                    set to end of match        reset to undef
m/⋯/gc                   starts at target's pos                    set to end of match        left unchanged


QUOTE:
原帖由 churchmice 于 2008-3-20 12:52 发表
最后说一下/c的作用,/c就是continue的意思
本来如果在m//g的时候匹配不成功则pos会被reset成undef
但是如果是m//gc的时候,如果匹配不成功则pos是不会发生变化的

#!/usr/bin/perl
use strict;
use warnin ...

多谢兄弟耐心的讲解,明白很多了,感谢。