in reply to Re: Re: Re: Pattern match location finding
in thread Pattern match location finding

You could also use a zero width lookahead. Just leave one character out of the zero width lookahead to increment pos().
use strict; my $mystring = "AABAABAA"; my @array; {} while $mystring =~ /A(?=ABAA)(?{push @array, pos($mystring)})/g; print join(",", @array),"\n"; #or without any fancy "experimental" regex stuff @array=(); while ($mystring =~ /A(?=ABAA)/g) { push @array, pos($mystring) } print join(",", @array),"\n"; __OUTPUTS__ 1,4 1,4
That is the 1 based position shown in the original post. If you want 0 based just use push @array, pos($mystring)-1

--

flounder

Replies are listed 'Best First'.
Re: Re**4: Pattern match location finding
by diotalevi (Canon) on Feb 19, 2004 at 04:52 UTC
    That's a good idea. I don't think I recommended anything esperipmental thpogh.