【发布时间】:2020-04-24 09:48:14
【问题描述】:
我在数据框中有一列 filename,如下所示:
/testData/THQ/TAIRATE.20030314.190000.tif
/testData/THQ/TAIRATE.20030314.200000.tif
/testData/THQ/TAIRATE.20030314.210000.tif
/testData/THQ/TAIRATE.20030314.220000.tif
我想从中提取时间戳并将其存储为另一列。但我不熟悉正则表达式。到目前为止,我已经做到了:
tdat %>%
dplyr::rowwise() %>%
dplyr::mutate(timestamp = str_extract(as.character(filename), "[^//TAIRATE]+$")) %>%
glimpse()
结果
.20030314.190000.tif
.20030314.200000.tif
.20030314.210000.tif
.20030314.220000.tif
预期结果
20030314190000
20030314200000
20030314210000
20030314220000
问题:如何编写正确的正则表达式或有更好的方法?
【问题讨论】:
-
试试
str_extract(as.character(filename), "(?<=TAIRATE\\.)\\d+") -
@WiktorStribiżew 谢谢!但这是删除点之后的所有内容。获取
20030314 -
没错,那么
str_replace(as.character(filename), ".*TAIRATE\\.(\\d+)\.(\\d+).*", "\\1\\2")呢?这将产生副作用:如果没有找到匹配项,您最终将保持整个文件名不变。