重复日期解析的正则表达式模式

Repeating a regex pattern for date parsing

我有以下字符串

"31032017"

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

"31.03.2017"

最好的功能是什么? 还有一个普遍的问题,我怎样才能重复匹配的部分,比如 sed 中的 bash?在那里,我们使用 重复第一个匹配的部分。

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"

如果您想 work/do 计算日期,请省略 as.character

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

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

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

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