在R中使用正则表达式过滤带有时间戳的日期

时间:2019-02-12 18:13:29

标签: r regex

我正在尝试使用正则表达式将过滤器应用于矢量,以便通过以下方式检索与日期和时间戳匹配的数据:“ 12/20/2018 6:08 PM” 示例:

vec<-c("house", "1 house", house 1", "12/20/2018 6:08 PM", "12/21/2018 11:49 AM", "01/05/2019 11:21 AM")

我尝试了以下操作:

str_detect(vec, "^[1-9]{2}/[1-9]{2}/[1-9]{2} [1-9]{2}:[1-9]{2} [A,P,M]$")

但这与时间戳不符。

1 个答案:

答案 0 :(得分:1)

我将OP的正则表达式更改为以下内容:

10.50$

或在Base R中:

library(stringr)
str_detect(vec, "^[01][0-9]/[0-3][0-9]/[0-9]{4}\\s1?[0-9]:[0-9]{2}\\s[AP]M$")
# [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE

如果您的目标是最终将grepl("^[01][0-9]/[0-3][0-9]/[0-9]{4}\\s1?[0-9]:[0-9]{2}\\s[AP]M$", vec) # [1] FALSE FALSE FALSE TRUE TRUE TRUE 转换为日期时间,我们可以直接使用vec进行转换:

as.POSIXct