首页 > 解决方案 > R 使用 stringr::str_extract g

问题描述

我在向量中有一个字符串,例如:

l <- c("0_Mango_10a"  "0_Orange_10b"  "0_Apple_11)

我需要提取 Mango_10a、Orange_10b 和 Apple_11

我当前的代码是:

stringr::str_extract(l, "(?<=_)[:alnum:]+")

我买了芒果、橙子和苹果。

任何人都可以帮助我获得预期的结果。

提前致谢!

标签: r

解决方案


只需将trimwsfrombase R指定whitespace为一个或多个数字(\\d+)后跟下划线(_

trimws(l, whitespace = "\\d+_")
[1] "Mango_10a"  "Orange_10b" "Apple_11"  

stringr,str_remove可以使用

stringr::str_remove(l, "^\\d+_")
[1] "Mango_10a"  "Orange_10b" "Apple_11"  

str_extract中,指定的模式仅匹配字母数字而不是_。如果我们包括,它将起作用

stringr::str_extract(l, "(?<=_)[[:alnum:]_]+")
[1] "Mango_10a"  "Orange_10b" "Apple_11"  

推荐阅读