是否有相当于"&"在R的正则表达式中用于反向整个匹配

时间:2016-08-01 18:52:45

标签: regex r

当我使用vim时,我经常使用&反向引用替换中的整个匹配。例如,以下内容替换了" foo"的所有实例。与" foobar":

%s/foo/&bar/g

这里的好处是懒惰:我不必在匹配中键入括号,我只需要为替换中的反向引用键入一个字符而不是两个字符。也许更重要的是,当我输入我的比赛时,我没有弄清楚我的背叛,减少了认知负荷。

是否有一个等同于&我在R&#39的正则表达式中使用vim(可能使用perl = T参数)?

2 个答案:

答案 0 :(得分:6)

基础R sub / gsub函数的答案是 NO ,请参阅this reference

  

整体匹配没有替换文字令牌。将整个正则表达式放在捕获组中,然后使用\1插入整个正则表达式匹配。

但是,在stringr中,您可以使用\0

> library(stringr)
> str_replace_all("123 456", "\\d+", "START-\\0-END")
[1] "START-123-END START-456-END"

答案 1 :(得分:0)

我们可以使用gsubfn

library(gsubfn)
gsubfn("\\d+", ~paste0("START-", x, "-END"), "123 456")
#[1] "START-123-END START-456-END"