当子串在R中多次出现时,在子串之间删除字符串部分

时间:2014-03-02 16:31:31

标签: regex r string-parsing strsplit

字符串

string="aaaaaaaaaSTARTbbbbbbbbbbSTOPccccccccSTARTddddddddddSTOPeeeeeee"

我想删除START和STOP之间发生的所有部分,产生

"aaaaaaaaacccccccceeeeeee"

如果我尝试 gsub("START(.*)STOP","",string)这给了我 "aaaaaaaaaeeeeeee"虽然。{/ p>

这样做的正确方法是什么,允许多次出现START和STOP?

2 个答案:

答案 0 :(得分:3)

也在其中添加?

gsub("START.*?STOP", "", string)
# [1] "aaaaaaaaacccccccceeeeeee"

答案 1 :(得分:0)

不像Ananda的答案那么优雅,但还有一些其他方式使用弦乐器& plyr包。

library(stringr)
library(plyr)

start <- ldply(str_locate_all(string, 'START'))[1, 1]
end <- ldply(str_locate_all(string, 'STOP'))
end <- end[nrow(end), 2]
expression <- str_sub(string, start, end)
str_replace(string, expression, '')