gpt4 book ai didi

regex - 从R中的字符串获取日期/时间

转载 作者:行者123 更新时间:2023-12-02 07:03:08 24 4
gpt4 key购买 nike

我有一个字符串可以这样说

Ankit says: May 13, 2013 at 10:55 am you rock

而且,我希望从中获取日期

May 13, 2013

有什么方法可以在 R 中做到这一点吗?我已经通过以下方式尝试了 strptime 函数:

strptime("Ankit says: May 13, 2013 at 10:55 am you rock", " %b %d, %Y")

我得到 "NA"

但是当我尝试在日期之前没有任何文字时

strptime("May 13, 2013 at 10:55 am you rock", " %b %d, %Y")

我得到输出为 "2013-05-13"

我也尝试过类似的正则表达式

grep("Ankit says: May 13, 2013 at 10:55 am you rock", "?(?:[a-zA-Z]*)(\\s+)(?:[0-9]*)(,)(\\s+)(?:[0-9]*)")

最佳答案

这使用 gsubfn package 中的 strapply .它将正则表达式 pat 匹配到每个字符串,将匹配正则表达式括号部分的子字符串作为单独的参数传递给 to.POSIXct,然后最后组装该函数的输出。我们假设每个实例中存在相同的日期和时间格式,但没有对周围的文本做出太多假设:

library(gsubfn)
s <- c("Ankit says: May 13, 2013 at 10:55 am you rock",
"The date is Jun 6, 2013 and the time is 11:18 pm")

pat <- "(\\w+ \\d{1,2}, \\d{4}).*(\\d{2}:\\d{2} [ap]m)"
to.POSIXct <- function(d, t) as.POSIXct(paste(d, t), format = "%b %d, %Y %I:%M %p")
strapply(s, pat, to.POSIXct, simplify = "c")

给了

[1] "2013-05-13 10:55:00 EDT" "2013-06-06 23:18:00 EDT"

更新:更正

关于regex - 从R中的字符串获取日期/时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com