>>900
実直に書いてみた。
my @str = ('<a href=...>', '</a>' , '<a>', '</a hoge>' ) ;

for my $str ( @str ){
 my $flag = 0 ;
 if ( $str =~ m{\<
       (/(?{ $flag = 1 })|(?{ $flag = 0 }))
      a
      (??{ $flag == 0 ? '\s+\S+.*?' : '' })
       \>}x ){
   print $str . "\n" ;
 }
}

アホす。