如何在R中的两个单词之间获取文本?

时间:2015-07-21 05:19:49

标签: r string

我试图在一个句子中的两个单词之间得到文本   例如,句子是 -

x <-  "This is my first sentence"

现在我希望Thisfirst之间的文字为is my。 我尝试过R中的各种函数,例如grepgreplpmatchstr_split。但是,我无法得到我想要的东西。

这是我与gsub最接近的地方。

gsub(".*This\\s*|first*", "", x)

它给出的输出是

 [1] "is my  sentence"

实际上,我需要的只是

[1] "is my"

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:9)

使用 qdapRegex 包中的rm_between的另一种方法。

library(qdapRegex)
rm_between(x, 'This', 'first', extract=TRUE)[[1]]
# [1] "is my"

答案 1 :(得分:6)

最后,您需要.*才能在&#39; first&#39;

之后匹配零个或多个字符
 gsub('^.*This\\s*|\\s*first.*$', '', x)
 #[1] "is my"

答案 2 :(得分:1)

由于此问题用作参考,因此我将添加一些可能的解决方案以构建完整的概述。两者均基于look-ahead/look-behind正则表达式模式。

基数R

regmatches( x, gregexpr("(?<=This ).*(?= first)", x, perl = TRUE ) )

字符串

stringr::str_extract_all( x, "(?<=This ).+(?= first)" )