this code:
1 #!/usr/bin/perl -w
2
3 $_ = " [11] [22] a ";
4
5 #with .*?
6 $re1 = qr/a|\[.*?\d\d\]/;
7 $re2 = qr/($re1\s)?$re1/;
8 ($f) = /($re2)/;
9 print "with .*? : $f\n";
10
11 #without .*?
12 $re1 = qr/a|\[\d\d\]/;
13 $re2 = qr/($re1\s)?$re1/;
14 ($f) = /($re2)/;
15 print "without .*? : $f\n";
gets this result:
with .*? : [11] [22] a
without .*? : [11]
The difference between the two sections of code is in Lines 6/12, i.e., the
presence/absence of '.*?'. The regex in Line 6 seems to be using the
second ']' in the target string to satisfy its '\]'. But shouldn't the '?'
in '.*?' cause the search to terminate at the first ']' and yield the same
result as the expression in Line 12?
also, why should removal of the 'a|' in $re1 make any difference in the
behavior of the expression? in fact, the removal causes the regex to
return '[11]', i.e., allows the '?' quantifier to work.
Thanks,
Tom Arnall
--
thanks,
tom arnall
north spit, ca
--
thanks,
tom arnall
north spit, ca
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>