在 R 的正则表达式中是否有等价于“&”的反向引用整个匹配项?

Is there an equivalent of "&" in R's regular expressions for backreference to entire match?

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

%s/foo/&bar/g

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

R 的正则表达式中是否有与我在 vim 中使用的 & 等效的东西(可能使用 perl = T 参数)?

在基础 R sub/gsub 函数中:答案是 NO,参见 this reference:

There is no replacement text token for the overall match. Place the entire regex in a capturing group and then use </code> to insert the whole regex match.</p> </blockquote> <p><strong>In <code>stringr package: YES 你可以使用 [=15=]:

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

我们可以使用gsubfn

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