当我使用vim时,我经常使用&
反向引用替换中的整个匹配。例如,以下内容替换了" foo"的所有实例。与" foobar":
%s/foo/&bar/g
这里的好处是懒惰:我不必在匹配中键入括号,我只需要为替换中的反向引用键入一个字符而不是两个字符。也许更重要的是,当我输入我的比赛时,我没有弄清楚我的背叛,减少了认知负荷。
是否有一个等同于&
我在R&#39的正则表达式中使用vim(可能使用perl = T
参数)?
答案 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"