我有一个像下面的向量

id < c("1250.3000488281_-57.882898769379_OilA")


我需要在_即-57.882898769379之后提取数字。

我尝试过这样的事情

library(magrittr)
id_play %>%
    stringr::str_extract(.,"(?<=[[:punct:]])([0-9]+)(?=_Oil)")


而不是得到-57。----我在“。”之后得到了所有东西。 ,即““ 882898769379”。

如何排除后面的查询不包含标点符号“。”?

最佳答案

带有sub的选项,用于捕获_之后的一个或多个数字,并替换为所捕获组的后向引用(\\1

sub(".*_(-?[0-9.]+)_.*", "\\1", id)
#[1] "-57.882898769379"

10-01 07:36