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"
我想通过 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"