!!!

THANK YOU! :)

F.

Rob Dixon wrote:
Filip Jursik wrote:
Hi,

this

$text = "first first second third";
$text =~ /(first.*?third)/;
print $1;

gives me

"first first second third"

as a result instead of expected

"first second third"

What am I doing wrong? I've expected the .*? to limit the wildcard only to the string " second ".

Hi Filip

The regex engine will match one element at a time. Yours matches 'first',
then as few characters as possible, then 'third'. Only if the entire match
fails will it try finding 'first' in a different place. If you want your expression to match at the last 'first' then just chew up as many characters
as possible before testing for it:

  my $text = "first first second third";
  $text =~ /.*(first.*?third)/;
  print $1;

OUTPUT

  first second third

HTH,

Rob

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to