[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