in reply to Re^5: regex doubt on excluding
in thread regex doubt on excluding
What am I missing?
I think rxrx :) pos , @- and @+
So it matched the zero length string, doesn't advance position, then matches one newline at same position thus advancing position, then it matches the zero length string again, and thats the end of matches
"a\n\n\nb" s(2)e(2)pos(2)len(0) ("a\n", "", "\n\nb") s(2)e(3)pos(3)len(1) ("a\n", "\n", "\nb") s(3)e(3)pos(3)len(0) ("a\n\n", "", "\nb")
I think that makes sense :)
#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; for my $many ( 1..4 ){ my $s = "a\n".("\n" x $many )."\nb"; dd( $s ); while( $s =~ m{^(\s*?)$}gm ){ my $pos = pos( $s ); my $one = defined $1 ? $1 : ''; my $len = length $one; my $start = $-[0]; # @- my $lend = $+[0]; # @+ print "s($start)e($lend)pos($pos)len($len) "; dd( ( "".substr $s, 0, $pos - $len), ( "".substr $s, $pos-$len, $len ), ( "".substr $s, $pos ) ); } } __END__ "a\n\n\nb" s(2)e(2)pos(2)len(0) ("a\n", "", "\n\nb") s(2)e(3)pos(3)len(1) ("a\n", "\n", "\nb") s(3)e(3)pos(3)len(0) ("a\n\n", "", "\nb") "a\n\n\n\nb" s(2)e(2)pos(2)len(0) ("a\n", "", "\n\n\nb") s(2)e(3)pos(3)len(1) ("a\n", "\n", "\n\nb") s(3)e(3)pos(3)len(0) ("a\n\n", "", "\n\nb") s(3)e(4)pos(4)len(1) ("a\n\n", "\n", "\nb") s(4)e(4)pos(4)len(0) ("a\n\n\n", "", "\nb") "a\n\n\n\n\nb" s(2)e(2)pos(2)len(0) ("a\n", "", "\n\n\n\nb") s(2)e(3)pos(3)len(1) ("a\n", "\n", "\n\n\nb") s(3)e(3)pos(3)len(0) ("a\n\n", "", "\n\n\nb") s(3)e(4)pos(4)len(1) ("a\n\n", "\n", "\n\nb") s(4)e(4)pos(4)len(0) ("a\n\n\n", "", "\n\nb") s(4)e(5)pos(5)len(1) ("a\n\n\n", "\n", "\nb") s(5)e(5)pos(5)len(0) ("a\n\n\n\n", "", "\nb") "a\n\n\n\n\n\nb" s(2)e(2)pos(2)len(0) ("a\n", "", "\n\n\n\n\nb") s(2)e(3)pos(3)len(1) ("a\n", "\n", "\n\n\n\nb") s(3)e(3)pos(3)len(0) ("a\n\n", "", "\n\n\n\nb") s(3)e(4)pos(4)len(1) ("a\n\n", "\n", "\n\n\nb") s(4)e(4)pos(4)len(0) ("a\n\n\n", "", "\n\n\nb") s(4)e(5)pos(5)len(1) ("a\n\n\n", "\n", "\n\nb") s(5)e(5)pos(5)len(0) ("a\n\n\n\n", "", "\n\nb") s(5)e(6)pos(6)len(1) ("a\n\n\n\n", "\n", "\nb") s(6)e(6)pos(6)len(0) ("a\n\n\n\n\n", "", "\nb")
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: regex doubt on excluding
by Athanasius (Archbishop) on Aug 16, 2014 at 06:25 UTC |