在R中的两个单词之间提取字符串

时间:2018-01-06 23:39:58

标签: r gsub exact-match

让我们说这是我的字符串

string<- c("righttoleftrightandleft")

我想提取左右之间的所有字符,所以结果会像那样

results<-("to","and")

4 个答案:

答案 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"

请注意:

  1. gsub提取括号中的所有元素,每个元素都存储在\\1
  2. ?是非贪婪匹配所必需的
  3. 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"