R中的分裂日期

时间:2016-05-10 10:44:16

标签: regex r

我可以想象这个问题相对简单,但我无法弄明白。我有以下字符串:

"2015-12-292016-01-28"

我想创建以下内容:

"2015-12-29 2016-01-28"

我尝试将strsplit应用于正则表达式(\\d{3}-\\d{2}-\\d{2}),但不幸的是它不起作用。关键是我想把日期保存在一个字符串中。

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用非字边界\B和捕获组sub

sub("\\B(\\d{4}-\\d{2}-\\d{2})", " \\1", s)

如果胶合的日期时间值超过2个,请将sub替换为gsub

查看IDEONE demo

模式细节:

  • \B - 非字边界(如果字符前面有数字,则只匹配数字)
  • (\d{4}-\d{2}-\d{2}) - 第1组(后来在替换模式中以\1反向引用)matchinf
    • \d{4} - 4位数
    • - - 连字符
    • \d{2}-\d{2} - 2位数,连字符和2位数。

请参阅regex demo at regex101.com

答案 1 :(得分:0)

我们可以使用strsplit(v1, "(?<=\\d{2})(?=\\d{4})", perl=TRUE)[[1]] #[1] "2015-12-29" "2016-01-28"

v1 <- "2015-12-292016-01-28"

数据

isset()