jimmy,On 03/23/2014 12:31 PM, jimmy wrote:
Saudações Rodrigo Coster,
On Sat, Mar 22, 2014 at 09:54:35PM -0300, Rodrigo Coster wrote:
A tua expressão tem alguns problemas... A expressão ". [A-Z]" capturaVocê pode usar algumas soluções para resolver este problema:
qualquer caractere (e não somente ponto), seguido por um espaço e uma
letra maiúscula (http://regex101.com/r/hG9uK2). Para capturar o ponto,
precisa usar \\. no lugar
Segue uma solução: gsub('(?<=\\. )([A-Z])', '\\L\\1', texto, perl =
TRUE) e a explicação em: http://regex101.com/r/xV7zE0
Único problema é que frases que iniciam com letras acentuadas não
funciona (se alguém souber resolver, eu agradeço, pq isso me da uma
baita dor de cabeça as vezes)
- Ao invés de usar "[A-Z]" como intervalo, usar a classe POSIX
"[:upper:]".
- Declarar explicitamente quais caracteres deseja modificar o caso.
Exemplo: "[A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ]"
- Usar a unicode property \p{Lu}.
Todas essas soluções são bastante genéricas e podem apresentar efeitos
colaterais dependendo do conteúdo de "texto". Um exemplo que já posso
prever agora será quando "texto" tiver abreviações, "Dr. José ..."
ficará como "Dr. josé ...".
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com
Nesta caso a comando ficaria assim:
gsub('(?<=\\. )([:upper:])', '\\L\\1', texto, perl =TRUE)
Mas aqui não funcionou ... Onde está o meu erro ?
[]s
Tura
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.