[R] Regular expression help

Georges Monette georges at yorku.ca
Tue Oct 10 03:08:20 CEST 2017


How about this (I'm showing it as a pipe because it's easier to read 
that way):

library(magrittr)
"f 147/1315/587 2820/1320/587 3624/1321/587 1852/1322/587" %>%
   strsplit(' ') %>%
   unlist %>%
   sub('^[^/]*/*','',.) %>%
   sub('^[^/]*/*','',.) %>%
   paste(collapse = ' ')

Georges Monette

-- 
Georges Monette, PhD P.Stat.(SSC) | Associate Professor. Faculty of Science, Department of Mathematics & Statistics | North 626 Ross Building | York University | 4700 Keele Street, Toronto, ON M3J 1P3 | Telephone: 416-736-5250 | Fax: 416-736-5757 | E-Mail: georges at yorku.ca


On 2017-10-09 11:02 AM, Duncan Murdoch wrote:
> I have a file containing "words" like
>
>
> a
>
> a/b
>
> a/b/c
>
> where there may be multiple words on a line (separated by spaces).  
> The a, b, and c strings can contain non-space, non-slash characters. 
> I'd like to use gsub() to extract the c strings (which should be empty 
> if there are none).
>
> A real example is
>
> "f 147/1315/587 2820/1320/587 3624/1321/587 1852/1322/587"
>
> which I'd like to transform to
>
> " 587 587 587 587"
>
> Another real example is
>
> "f 1067 28680 24462"
>
> which should transform to "   ".
>
> I've tried a few different regexprs, but am unable to find a way to 
> say "transform words by deleting everything up to and including the 
> 2nd slash" when there might be zero, one or two slashes.  Any 
> suggestions?
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list