Como você combina caracteres acentuados e til em uma expressão regular perl (regexp)?
Um usuário digita um conjunto de nomes com acentos e tons:
Renato Núñez, David DeJesús, and Edwin Encarnación
Meu banco de dados tem nomes anglicizados para essas pessoas
@names = ('Renato Nunez','David DeJesus','Edwin Encarnacion');
Desejo fazer uma correspondência regexp nesses nomes.
$string = "Renato Núñez, David DeJesús, and Edwin Encarnación";
foreach my $name (@names) {
print "found:$name\n" if ($name =~ /$string/);
}
Como apresentado atualmente, não recebo correspondências.
Eu tentei isso, mas não funcionou.
$string = "Renato Núñez, David DeJesús, and Edwin Encarnación";
foreach my $name (@names) {
$name =~ s|a|[áa]|;
$name =~ s|e|[ée]|;
$name =~ s|i|[íi]|;
$name =~ s|o|[óo]|;
$name =~ s|u|[úu]|;
$name =~ s|n|[ñn]|;
# Originally: print "found:$name\n" if ($name =~ /$string/);
# Corrected to:
print "found:$name\n" if ($string =~ /$name/);
}
EDIT: desculpe, eu tinha $ name e $ string invertidos na última linha.
Alguma sugestão?