如何用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
相关产品推荐
相关产品推荐

