从 R 中的给定字符串中提取日期

Extract date from a given string in R

这是我有的字符串

"7MA_S_VE_MS_FB_MEASURE_P1_2013-08-21_17-42-19.BMP"

我正在尝试以这种方式提取日期:

library(stringr)
as.Date(str_extract(test,"[0-9]{4}/[0-9]{2}/[0-9]{2}"),"%Y-%m-%d")

为此,我得到 NA

期望的输出

2013-08-21

有人能指出我正确的方向吗?

您已将正则表达式中的破折号 - 替换为斜线 /

as.Date(str_extract(string, "[0-9]{4}-[0-9]{2}-[0-9]{2}"), format="%Y-%m-%d")
# [1] "2013-08-21"

但是你也可以用\d替换[0-9]位,它们代表同样的东西。我不确定为什么,但正则表达式专业人士似乎总是使用 \d 版本(请注意,您必须使用另一个反斜杠来转义反斜杠):

as.Date(str_extract(string, "\d{4}-\d{2}-\d{2}"), format="%Y-%m-%d")
# [1] "2013-08-21"

如果是固定位置

as.Date(strsplit(str1, "_")[[1]][8])
#[1] "2013-08-21"