r - R - 如何在两个字符串之间提取数字?

86 5

我有一个像下面的向量


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



我需要提取_后面的数字,换句话说,-57.882898769379.

我尝试了这样的方法


library(magrittr)


id_play %>%


 stringr::str_extract(.,"(?<=[[:punct:]])([0-9]+)(?=_Oil)")



我得到了 "."之后的所有内容,即882898769379,而不是得到-57。

如何排除标点“ .”?

时间: 原作者:

129 0

在_后使用sub,捕获一个或多个数字,并且替换为所捕获组的反向引用(1 )的选项


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


#[1]"-57.882898769379"



原作者:
143 1

只需用下划线替换[[:punct:]]


"(?<=_)(-?[0-9.]+)(?=_Oil)"



原作者:
138 3

使用strsplit(),然后提取每个记录的第二个元素。


vapply(strsplit(id,"_"), `[[`, character(1), 2)



原作者:
111 4


id_play %>%


 str_extract(.,"(?<=[[:punct:]])([0-9,.,-]+)(?=_Oil)")



原作者:
...