我知道这个问题已经以不同的方式被问了很多次,但是我找不到一个解决方案,我会在保留边框的同时替换一些“边框”之间的文本。
input <- "this is my 'example'"
change <- "test"
现在我想用change
中的值替换单引号之间的所有内容。
预期输出为"this is my 'test'
我尝试了不同的变体:
stringr::str_replace(input, "['].*", change)
但它不起作用。例如,上面的一个给出"this is my test"
,所以它不再有单引号。
有什么想法吗?
3条答案
按热度按时间eoxn13cs1#
这边呢?
**(?〈=')←看前面的字符是一个'**没有抓住它。
.←捕捉任何字符,但尽可能少。为了隐藏这样的情况“这是我的'例子'你看到'它'”
**(?=')←看下面的字符是一个'**没有赶上它。
↓在这里测试↓
ideone
mkh04yzy2#
使用
sub()
,我们可以尝试:vuktfyat3#
您可以使用
或者,您也可以捕获撇号,然后使用反向引用,但这样看起来会更难看(参见
gsub("(')[^']*(')", paste0("\\1",change,"\\2"), input)
)。请参阅R demo online:
输出量:
注意:如果您的
change
变量包含反斜杠,则必须将其加倍以避免出现以下问题: