重复使用正则表达式模式进行日期解析

时间:2018-09-27 12:23:56

标签: r regex gsub

我有以下字符串

"31032017"

,我想在R中使用正则表达式来获取

"31.03.2017"

执行此操作的最佳功能是什么? 还有一个普遍的问题,我该如何重复匹配的部分,就像sed中的bash中一样?在那里,我们使用\1来重复第一个匹配的部分。

2 个答案:

答案 0 :(得分:3)

date_vector = c("31032017","28052017","04052022")

as.character(format(as.Date(date_vector, format = "%d%m%Y"), format = "%d.%m.%Y"))

#[1] "31.03.2017" "28.05.2017" "04.05.2022"

如果您想对日期进行数学运算,请省略as.character

答案 1 :(得分:3)

您需要像这样将单个零件放在圆括号中:

sub("([0-9]{2})([0-9]{2})([0-9]{4})", "\\1.\\2.\\3", "31032017")

然后您可以使用\\ 1来访问与第一组匹配的部分,而使用\\ 2来访问第二组,依此类推。

请注意,如果您的字符串是日期,则比直接使用正则表达式有更好的方法来解析/重新格式化它。