[R-br] Duvida sobre expressões regulares.

Rodrigo Coster rcoster em gmail.com
Sexta Janeiro 3 16:01:20 BRST 2014


Não sei se são as soluções mais elegantes, mas seguem as minhas sugestões:

# Restringindo o conteúdo do parenteses:
grep('\\([0-9]{4}.?; ?[0-9]{4}.?\\)', exemplo, value=T) # Explicação:
http://regex101.com/r/nB6jH4

# Não restringindo o conteúdo do parenteses:
grep('\\([^\\)]*;.*\\)', exemplo, value=T) # Explicação:
http://regex101.com/r/dL3sB1

Pra pegar a posição é só trocar o value=T por value=F


2014/1/3 Augusto Ribas <ribas.aca em gmail.com>

> Ola a todos, e feliz ano novo.
>
> Suponha que eu tenho o seguinte exemplo:
>
> #
> exemplo<-c("Bursey et al. (2001)", "Bursey et al. (2001)", "Bursey et al.
> (2001)",
> "Bursey et al. (2001)", "Martins and Fabio (2005)", "Martins and Fabio
> (2005)",
> "Martins and Fabio (2005)", "Vicente et al. (1991)", "Vicente et al.
> (1991); Martins and Fabio (2005)",
> "Vicente et al. (1991)", "Vicente et al. (1991); Martins and Fabio
> (2005)",
> "Martins and Fabio (2005)", "Martins and Fabio (2005)", "Walton (1935)",
> "Yamaguti (1958)", "Iannacone (2003a)", "Iannacone (2003a)",
> "Iannacone (2003a)", "Iannacone (2003a)", "Iannacone (2003a)",
> "Iannacone (2003a)", "Iannacone (2003a)", "Goldberg and Bursey (2003)",
> "Goldberg and Bursey (2003)", "Goldberg and Bursey (2003)", "Combes and
> Laurent (1978)",
> "Baker (1980a)", "Yamaguti (1961); Sueldo and Ramirez (1976); Baker (1987)
> ",
> "Lent and Freitas (1948); Ramirez et al. (1979)", "Ramallo et al. (2007)",
> "Ramallo et al. (2007)", "Yamaguti (1958)", "Travassos et al. (1969)",
> "Travassos et al. (1969)", "González and Hamann (2007a; 2007b)"   ,
> "González and Hamann (2007a; 2007b)"   , "González and Hamann (2007b)"   ,
> "Travassos (1926a)", "Vicente et al. (1991); McAllister et al. (2010b)",
> "Kloss (1971; 1974)", "Rodrigues et al. (1982); Vicente et al. (1991)",
> "Walton (1935); Vicente et al. (1991)", "Vicente et al. (1991)",
> "Walton (1935); Vicente et al. (1991)", "Vicente et al. (1991)",
> "McAllister et al. (2010b)", "Vicente et al. (1991)", "Vicente et al.
> (1991)",
> "Vicente et al. (1991); McAllister et al. (2010b)", "Vicente et al. (1991)"
> )
> #
>
>
> Isso esta como uma coluna de um data-frame na verdade.
> Eu gostaria de fazer uma expressão regular que encontra-se casos
> como "González and Hamann (2007a; 2007b)", mas não os outros.
> Então seria algo como abre parenteses, 4 números, uma letra, ponto e
> virgula, espaço 4 números e uma letra, fecha parenteses.
> Eu tentei varias coisas e não consegui.
>
> Eu imagino que se eu fizer algo para encontrar abre parenteses, ponto e
> virgula, fecha parenteses, sendo o independente do conteudo dentro do
> parenteses, basta abrir o parenteses, ter um ponto e virgula e fechar o
> parenteses, ja resolveria, sendo que o antes do parenteses podem ter
> qualquer coisas (nome de autores).
>
> Então alguém poderia me ajudar a conseguir uma expressão regular que
> pega-se casos como esse exemplo "González and Hamann (2007a; 2007b)" em que
> há dois anos e um ponto e virgula dentro do parenteses mas não pegue outros
> casos?
>
> Bem é isso, agradeço desde ja qualquer ajuda :)
>
>
> --
> Grato
> Augusto C. A. Ribas
>
> Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
> Github: https://github.com/Squiercg
> Lattes: http://lattes.cnpq.br/7355685961127056
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140103/23f3210e/attachment.html>


Mais detalhes sobre a lista de discussão R-br