我正在尝试使用正则表达式将过滤器应用于矢量,以便通过以下方式检索与日期和时间戳匹配的数据:“ 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]$")
但这与时间戳不符。
答案 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