stringr 包中的 Perl 正则表达式

Perl regular expressions in the stringr package

perl() 函数在最新版本的 stringr 中已弃用,取而代之的是 regex()。但是,我似乎无法复制早期的行为。

为了将字符串向量的第一个字母大写,这曾经有效:

name <- c("jim", "john", "bill")
str_replace(name, perl("^(.)"), "\U\1")

但是,这不再有效:

str_replace(name, regex("^(.)"), "\U\1")

但使用基础 R 有效:

gsub("^(.)", "\U\1", name, perl=TRUE)

还有办法用 stringr 包做到这一点吗?

stringr 现在由 stringi instead which uses ICU 正则表达式提供支持。如果你想实现PCRE,只需在开启perl = TRUE模式时直接使用sub ...

sub('^(.)', '\U\1', name, perl=TRUE)
[1] "Jim"  "John" "Bill"