我可以想象这个问题相对简单,但我无法弄明白。我有以下字符串:
"2015-12-292016-01-28"
我想创建以下内容:
"2015-12-29 2016-01-28"
我尝试将strsplit应用于正则表达式(\\d{3}-\\d{2}-\\d{2})
,但不幸的是它不起作用。关键是我想把日期保存在一个字符串中。
谢谢。
答案 0 :(得分:2)
您可以使用非字边界\B
和捕获组sub
:
sub("\\B(\\d{4}-\\d{2}-\\d{2})", " \\1", s)
如果胶合的日期时间值超过2个,请将sub
替换为gsub
。
模式细节:
\B
- 非字边界(如果字符前面有数字,则只匹配数字)(\d{4}-\d{2}-\d{2})
- 第1组(后来在替换模式中以\1
反向引用)matchinf
\d{4}
- 4位数-
- 连字符\d{2}-\d{2}
- 2位数,连字符和2位数。答案 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()