让我们说这是我的字符串
string<- c("righttoleftrightandleft")
我想提取左右之间的所有字符,所以结果会像那样
results<-("to","and")
答案 0 :(得分:2)
string<- c("righttoleftrightandleft")
vec <- strsplit(string, split = "left")
result <- c( sub(pattern = "right", "", vec[[1]][1:2]) )
答案 1 :(得分:2)
请使用s <- "righttoleftrightandleft"
strsplit(gsub("right(.*?)left", "\\1 ", s), split="\\s")[[1]]
这给出了一个向量:
[1] "to" "and"
请注意:
gsub
提取括号中的所有元素,每个元素都存储在\\1
?
是非贪婪匹配所必需的strsplit
在空格上分割结果匹配答案 2 :(得分:2)
可以尝试:
gsub("right(.*?)left", "\\1", regmatches(string, gregexpr("right(.*?)left",string))[[1]])
regmatches(...)
返回匹配序列,gsub(...)
提取中间的单词。
答案 3 :(得分:2)
您还可以使用以下内容:
text="righttoleftrightandleft"
A=unlist(strsplit(text,"right|left",))
A[A!=""]
[1] "to" "and"