Hello BrowserUk,
I don’t think it’s pedantic (in the pejorative sense, anyway) to insist on correct terminology. Often, when one is trying to understand a new technical concept, getting the terminology clear is half the battle. For regex quantifiers, the distinction is between greedy, on the one hand, and non-greedy or frugal (see below) on the other. And “lazy” does suggest lazy evaluation, which has no application here.
But... if “lazy” is taken in its more general sense of “doing less work,” then it may be worth noting here that frugal quantifiers do less work — and are in that sense “lazier” — than their greedy counterparts:
use strict; use warnings; use Benchmark 'cmpthese'; my $date = '(30-Jul-2015)'; my $string = 'A' x 1e5 . $date . 'B' x 1e5; cmpthese ( 1e4, { Greedy => sub { $string =~ / ^ .* ( \( \d{2} - \w{3} - \d{4} \) + ) /x; $1 eq $date or die $!; }, Frugal => sub { $string =~ / ^ .*? ( \( \d{2} - \w{3} - \d{4} \) + ) /x; $1 eq $date or die $!; }, } );
Typical output:
17:36 >perl 1323_SoPW.pl Rate Greedy Frugal Greedy 1068/s -- -70% Frugal 3555/s 233% -- 17:37 >
Of course, this information will be useful only for those situations in which it can be known in advance that a frugal match is guaranteed to produce the same result as its greedy equivalent. So far I haven’t thought of any practical examples that qualify. But “no knowledge is ever wasted,” as my mother always says.
Yours in pedantry, :-)
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re^2: What are greedy and lazy matching in Perl?
by Athanasius
in thread What is greedy and lazy Matching in perl
by shankonit
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |