You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言基础函数grep/gsub提取目标时间字符串?

解决方法

下面几种基础R函数的实现方式都能满足你的需求:

方法1:两次gsub分步处理

先移除第一个空格及之前的所有内容,再去掉末尾的" UTC":

x <- "1899-12-31 17:20:00 UTC"
result <- gsub(" UTC$", "", gsub("^.*? ", "", x))
# 输出结果
result
# [1] "17:20:00"
  • 正则^.*? :^匹配字符串开头,.*?是非贪婪匹配任意字符,直到遇到第一个空格,把这部分替换为空;
  • 正则 UTC$:$匹配字符串末尾,精准匹配末尾的" UTC"并替换为空。

方法2:单次gsub捕获目标内容

利用正则捕获组直接提取需要的时间部分,一步到位:

x <- "1899-12-31 17:20:00 UTC"
result <- gsub("^.*? (\\d{2}:\\d{2}:\\d{2}) UTC$", "\\1", x)
result
  • (\\d{2}:\\d{2}:\\d{2})是捕获组,匹配并保存HH:MM:SS格式的时间;
  • \\1引用刚才捕获的内容,用它替换整个原字符串,直接得到目标结果。

方法3:strsplit分割字符串

因为你的字符串格式固定,按空格分割后取中间部分即可:

x <- "1899-12-31 17:20:00 UTC"
result <- strsplit(x, " ")[[1]][2]
result
  • strsplit(x, " ")把字符串按空格拆分成一个列表,[[1]]取出列表里的向量,[2]取向量的第二个元素,也就是你要的时间。

内容的提问来源于stack exchange,提问作者Mark Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:01:20