[Cascavel-pm] :b ou :basechar no Perl 6 (Was: Reconhecer com e sem acento)
Daniel Ruoso
daniel em ruoso.com
Quinta Julho 19 03:41:13 PDT 2007
Qua, 2007-07-18 às 17:20 -0300, fernandolouis em terra.com.br escreveu:
> Talvez seja bem simples... antes de me falarem RTFM, digo-lhes que já
> li... e tentei usar /gi, mas não deu
> O que eu quero é reconhecer uma palavra dentro de uma string, com ou
> sem acentuação.
> Por exemplo:
> $palavra = "Manual de referência rápida";
> if ($palavra =~ /referencia/) { # entrar se achar "referencia" dentro
> de $palavra... mesmo sem acento.
> }
É interessante você tocar nesse assunto porque tive uma situação
parecida a um tempo atrás, só que um pouco mais complexa...
O problema era:
Dada a palvavra "referência" ou "referencia" envolver com a tag bold no
texto todas as referências também com ou sem acento. É mais complexo
porque o meu match era variável e porque eu precisava fazer
substituições.
É interessante a sua linha de raciocínio em tentar utilizar
modificadores da regexp para fazer isso, porque na verdade, se a regexp
suporta fazer match "case-insensitive" faz todo sentido que ela pudesse
fazer matches "unicode-properties-insensitive".
Sim "e", "é" e "ê" são a mesma letra em unicode, apenas possuem
propriedades diferentes. A notícia ruim é que as regular expressions do
Perl 5 (ainda?) não implementa isso. A notícia boa é que quando eu tive
esse mesmo problema, fui ao #perl6 trocar uma idéia com o pessoal e
então o Perl 6 vai ter um match modifier para isso, o "b" ou "basechar".
http://dev.perl.org/perl6/doc/design/syn/S05.html#___top
/me loves Perl 6 open development community
Daniel
Mais detalhes sobre a lista de discussão Cascavel-pm