如何使用stringr::str_extract提取c与最后一个_之间的数字?
解决方法
要提取c与最后一个_之间的数字,你可以使用带正向预查/后查的正则表达式,配合stringr::str_extract实现:
library(stringr) # 定义目标向量 vec <- c("revenue_d_p2_c16_s4", "revenue_d_p2_c9_s4", "revenue_d_p2_c99_s4") # 提取目标数字 extracted_nums <- str_extract(vec, "(?<=c)\\d+(?=_[^_]+$)") # 输出结果 extracted_nums #> [1] "16" "9" "99"
正则表达式说明
(?<=c):正向后查,确保匹配的数字前面紧跟字符c;\\d+:匹配1个或多个连续数字;(?=_[^_]+$):正向预查,确保数字后面的_是字符串中的最后一个_([^_]+$表示匹配非_字符直到字符串末尾)。
这个正则精准定位了c之后、最后一个_之前的数字区域,能准确提取你需要的结果。
内容的提问来源于stack exchange,提问作者Paula
相关产品推荐
相关产品推荐

