从 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"
这是我有的字符串
"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"