Regular Exp & Matching Question

Everytime I use perl i some how wind up needing to match the smallest occurence of a substr within a string.

$a="< a hhref='http://www.yahoo.com' name=a>Yahoo!</a><a href ='link.com'>Link</a>";
if ($a=~/name=a>(.*)<\/a>/)
{
   print $1;
}

The result I want is "Yahoo!" but what i actually get is "Yahoo!</a><a href ='link.com'>Link".  I realize the regular expression ".*" is the culprit but how do i tell perl to grab the "smallest" matching string and not the default largest matching string?  Is it simply replacing ".*" with "[^<]*" for my case or is there another method?
barkinAsked:
Who is Participating?
 
clockwatcherCommented:
'?' will make the match non-greedy.

$a="< a hhref='http://www.yahoo.com' name=a>Yahoo!</a><a href ='link.com'>Link</a>";
if ($a=~/name=a>(.*?)<\/a>/)
{
  print $1;
}

See:

 perldoc -q greedy
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.