in reply to Re: Re: Re: New regex trick...
in thread New regex trick...
Oh, \K doesn't stop .* from matching the entire string. Perl is smart enough to back off to the last "." when the \. node comes up.
What \K is doing is faking WHERE in the string (and the pattern) the regex started to match. Compare:
See, \K tells $& that THIS is where it begins. This is useful in substitutions:$str = "Match 9 the 1 last 6 digit 2 blah"; $str =~ /.*\d/; print "[$`] [$&] [$']\n"; $str =~ /.*\K\d/; print "[$`] [$&] [$']\n"; __END__ [] [Match 9 the 1 last 6 digit 2] [ blah] [Match 9 the 1 last 6 digit ] [2] [ blah]
And you save time on replacing "saveme" with itself.# you go from this: s/(saveme)deleteme/$1/; # to this: s/saveme\Kdeleteme//;
_____________________________________________________
Jeff[japhy]Pinyan:
Perl,
regex,
and perl
hacker, who'd like a job (NYC-area)
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: Re: Re: New regex trick...
by redsquirrel (Hermit) on Jul 22, 2002 at 21:08 UTC |
In Section
Meditations