[R-br] Tirar maiuscula apos o ponto
jimmy
jimmy.tty em gmail.com
Domingo Março 23 12:31:19 BRT 2014
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]" captura
> 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)
Você pode usar algumas soluções para resolver este problema:
- 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
Mais detalhes sobre a lista de discussão R-br