2016-08-16 110 views
0

我试图用gsub用一个不同的单词替换字符串中的单词(包含在单引号中,即以单引号开头和结尾),存储在一个变量中。我想保留单引号。R gsub字符串以字首开头,前缀无需删除前缀

所以,如果我开始与此:

a <- "I am going to buy an 'apple' and a 'apple'" 
repl <- "pear" 

我想它最终成为:

"I am going to buy an 'pear' and a 'pear'" 

我已经试过这样下面的几件事情,但它永远只能似乎替换'苹果'和单引号,而我想保留单引号。

a2 <- gsub("\'apple\'", repl, a) 

回答

2

您可以使用?<=看后面?=看在Perl-compatible regexps提前语法从?gsub,在这种情况下,单引号将只是像边界,但不会被取代:

gsub("(?<=\')apple(?=\')", repl, a, perl = T) 
# [1] "I am going to buy an 'pear' and a 'pear'" 
1

使用gsubfn

library(gsubfn) 
gsubfn("'([^']+)'", paste0("'", repl, "'"), a) 
#[1] "I am going to buy an 'pear' and a 'pear'"