如何从日期时间字符串中提取第二个冒号之前的所有字符串?

问题描述 投票:0回答:3

我的时间数据如下所示:

2024-01-26 19:24:40.0

我想像这样提取第二个冒号之前的所有内容:

2024-01-26 19:24

我尝试了如下代码:

a="2024-01-26 19:24:40.0"
b=sub("(^([^:]+:){2}).*$", "\\1",a)

但是结果是这样的:

2024-01-26 19:24:

那么如何正确编写代码呢?

r
3个回答
3
投票

使用

as.POSIXct

format(as.POSIXct(a), "%F %R")
[1] "2024-01-26 19:24"

1
投票

选项1

> sub("(.*\\d+:\\d+):.*", "\\1", a)
[1] "2024-01-26 19:24"

选项2

> sub(":\\d+\\.\\d+", "", a)
[1] "2024-01-26 19:24"

0
投票

strex
包有一些正则表达式函数来处理模式第n次出现之前/之后的提取:

library(strex)

str_before_nth("2024-01-26 19:24:40.0", ":", 2)
# [1] "2024-01-26 19:24"
© www.soinside.com 2019 - 2024. All rights reserved.