我试图在一个句子中的两个单词之间得到文本 例如,句子是 -
x <- "This is my first sentence"
现在我希望This
和first
之间的文字为is my
。
我尝试过R中的各种函数,例如grep
,grepl
,pmatch
,str_split
。但是,我无法得到我想要的东西。
这是我与gsub
最接近的地方。
gsub(".*This\\s*|first*", "", x)
它给出的输出是
[1] "is my sentence"
实际上,我需要的只是
[1] "is my"
任何帮助将不胜感激。
答案 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)" )