在R中我有一个类似于以下
的字符串x <- c("20130603 00:00:03.102","20130703 00:01:03.103","20130804 00:03:03.104")
我希望通过使用单个gsub
命令(而不是使用substr
和paste
来查看以下内容,但我有限的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的长度为几百万,因此任何用于提高速度的微基准测试都会有所帮助。
与往常一样,任何帮助都将不胜感激。
答案 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")