R:stringr 中的 $0 正则表达式运算符

R: $0 regex operator in stringr

我想通过 str_replace() 函数(stringr 包)使用 $0 正则表达式运算符。

例如,我有一个向量:

test <- c("1111", "2222", "3333")
test
[1] "1111" "2222" "3333"

我想得到下一个向量:“111_1”“222_2”“333_3”

当我尝试通过 str_replace 执行此操作时,我得到以下信息:

str_replace(test, "^\d{3}", "\[=11=]_")
[1] "\111_1" "\222_2" "\333_3"

$0 在 stringr 中如何工作?

P.S.: 我不想使用 (?<=) 和 (?=) 笨重的运算符。

似乎没有 $ 的 \0 指的是匹配所以:

str_replace(test, "^\d{3}", "\0_")
## [1] "111_1" "222_2" "333_3"

在 base R 中,可以这样做,其中 \1 指的是第一个(并且仅在此处)捕获组:

sub("^(\d{3})", "\1_", test)
## [1] "111_1" "222_2" "333_3"