Регулярные выражения Perl в пакете stringr

Функция 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?


person user2987808    schedule 13.05.2015    source источник
comment
Теперь он использует stringi для фактического выполнения работы. Просто используйте gsub напрямую, если вам нужны регулярные выражения perl.   -  person G. Grothendieck    schedule 13.05.2015


Ответы (1)


stringr теперь поддерживается stringi вместо этого используются регулярные выражения ICU. Если вы хотите реализовать PCRE, просто используйте sub напрямую при включении режима perl = TRUE...

sub('^(.)', '\\U\\1', name, perl=TRUE)
[1] "Jim"  "John" "Bill"
person hwnd    schedule 13.05.2015
comment
Значит, нет никакой возможности использовать PCRE со stringr? - person kath; 13.05.2018
comment
это нарушение условий сделки, я бы сказал - person emilBeBri; 29.04.2021