[R-br] Tirar maiuscula apos o ponto
Bernardo Rangel Tura
tura em centroin.com.br
Segunda Março 24 16:29:47 BRT 2014
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]" 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
jimmy,
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
Mais detalhes sobre a lista de discussão R-br