Regex 从Stringr包复制不推荐使用的perl()函数

Regex 从Stringr包复制不推荐使用的perl()函数,regex,r,pcre,stringr,Regex,R,Pcre,Stringr,我正在运行R3.2.1和Stringr1.0.0,下面的工作与我的机器上预期的一样。目标是提取与磅(130)相关的数字,下面的操作在我的机器上完成 x <- "line 4322: He is now 25 years old, and weights 130lbs" x %>% str_extract("\\d+(?=lbs)") %>% as.numeric() [1] 130 在最近的版本中,您不需要指定perl,以前,我必须将perl包装在regex周围

我正在运行R3.2.1和Stringr1.0.0,下面的工作与我的机器上预期的一样。目标是提取与磅(130)相关的数字,下面的操作在我的机器上完成

x <- "line 4322: He is now 25 years old, and weights 130lbs"

x %>% 
  str_extract("\\d+(?=lbs)") %>% 
  as.numeric()
[1] 130

在最近的版本中,您不需要指定
perl
,以前,我必须将
perl
包装在
regex
周围,现在它会给出错误,即perl函数已被弃用。因此,最好为您的朋友安装新版本的stringr和新版本的stringr。顺便说一句,我正在使用'stringr_1.0.0'和
R 3.2.2
,这两个代码对我都有效。如果您想复制错误
x%>%str_extract(perl(\\d+(?=lbs)”)#perl已被弃用。请改用regexp
谢谢@akrun,我希望不必依赖于更新另一个系统。然而,这可能是我唯一的选择,因为我还没有看到我的具体问题的明确答案。这里的要点是,你的模式在PCRE和ICU正则表达式风格中都会起到相同的作用。他们中的大多数人也会这样做。Unicode字符串可能有问题,PCRE谓词在ICU stringr regexp中不起作用。您应该对模式有一个概述,看看它们是否在两种口味中都兼容,而忽略这些选项。请注意,ICU将保留在stringr中,因此最好修改代码/表达式以满足ICU标准。或者在Base R中重新编写代码,在那里使用PCRE,并使用
perl=TRUE
x %>% 
  str_extract(regex("\\d+(?=lbs)", perl = T)) %>% 
  as.numeric()
[1] 130