正则表达式在日期中添加连字符

时间:2013-08-28 08:29:40

标签: regex r

在R中我有一个类似于以下

的字符串
x <- c("20130603 00:00:03.102","20130703 00:01:03.103","20130804 00:03:03.104")

我希望通过使用单个gsub命令(而不是使用substrpaste来查看以下内容,但我有限的regex知识令我感到沮丧在制定我需要做的事情时:

y <- gsub([REGEX PATTERN TO MATCH],[REPLACEMENT PATTERN TO INSERT HYPHEN] ,x)

> y
[1] "2013-06-03 00:00:03.102" "2013-07-03 00:01:03.103" "2013-08-04 00:03:03.104"

在我的实际例子中,x的长度为几百万,因此任何用于提高速度的微基准测试都会有所帮助。

与往常一样,任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

以下内容应该有效:

gsub("(\\d{4})(\\d{2})(\\d{2})", "\\1-\\2-\\3", subject, perl=TRUE);

答案 1 :(得分:0)

我实际上提出了与蒂姆完全相同的事情。如果你想要更紧凑的东西,请尝试使用stringr package

library(stringr)
str_replace_all("(\d{4})(\d{2})(\d{2})", "$1-$2-$3")