On Sat, Jul 05, 2003 at 11:29:12AM -0400, Jeff 'japhy' Pinyan wrote:
> On Jul 3, George P. said:
>
> >> while ($string =~ /pattern/g){
> >> $count++;
> >> if ($count > $max_count){
> >> $string = substr($string,0,pos($string));
> >> last;
> >> }
> >> }
> >
> >$string =~ s/((.*?$pattern){$max_count})(.*)/$1/s;
>
> You don't need to capture the .* at the end of the regex. This is one of
> those cases where I my \K anchor/assertion idea would really come in
> handy:
>
> s/(?:.*?$pattern){$max_count}\K.*//s;
>
> What the \K does is make the regex think it JUST started matching, so
> instead of replacing a bunch of stuff plus some extra fluff with the
> original bunch of stuff, we just say "after you've matched X, pretend you
> started matching HERE." It comes in handy in substitutions that look like
>
> s/(A)B/$1/;
Honest question: What's the advantage of doing it with the \K anchor
as opposed to simply not matching the C<B> section at all? (Assuming,
of course, that you don't B<need> to match it, e.g. to disambiguate
your match.)
--Dks
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]