I have these strings:
myseq <- c(\"ALM_GSK_LN_06.ID\",\"AS04_LV_06.ID.png\",\"AS04_SP_06.IP.png\")
What I want to do is to capture parts of
Your regular expression incorrectly matches the prefix because [A-Z]+
only matches letters. To fix this simply change the first group to a greedy operator such as (.+)
, here is another solution.
library(gsubfn)
myseq <- c('ALM_GSK_LN_06.ID', 'AS04_LV_06.ID.png', 'AS04_SP_06.IP.png')
strapply(myseq, '(.+)_([A-Z]+)[^.]+\\.([A-Z]+)', c, simplify = rbind)
# [,1] [,2] [,3]
# [1,] "ALM_GSK" "LN" "ID"
# [2,] "AS04" "LV" "ID"
# [3,] "AS04" "SP" "IP"