R 在带有正则表达式的数字之间插入分隔符

R 在带有正则表达式的数字之间插入分隔符,r,regex,regexp-replace,R,Regex,Regexp Replace,我有一个20位数的号码。类似于:000001001520081000000 但是我必须把它转到00000100-15.2008.1.00.0000。在七个数字之后,我必须插入一个-。然后,在2之后,我插入一个点。然后,在四,一和两个数字之后 我试图通过以下方式找到号码:d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d 然后转换为\d\d\d\d\d\d\d-\d\d\d\d\d\d\d\d\d\d\d,但它不起作用 然后,我真的不知道该怎么办。我正在使用R,我尝试了

我有一个20位数的号码。类似于:
000001001520081000000

但是我必须把它转到
00000100-15.2008.1.00.0000
。在七个数字之后,我必须插入一个
-
。然后,在2之后,我插入一个点。然后,在四,一和两个数字之后

我试图通过以下方式找到号码:
d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d
然后转换为
\d\d\d\d\d\d\d-\d\d\d\d\d\d\d\d\d\d\d
,但它不起作用

然后,我真的不知道该怎么办。我正在使用R,我尝试了
grep
(\d{7})(\d{2})(\d{4})(\d)(\d{2})(\d{4})

通过在每个间隔周围放置捕获组,可以使用
gsub
在匹配之间插入值

gsub(
“(\\d{7})(\\d{2})(\\d{4})(\\d)(\\d{2})(\\d{4})”,
"\\1-\\2,\\3,\\4,\\5,\\6", 
"000001001520081000000", 
perl=TRUE
)
[1]“0000010-015200,8,1000000”
(\d{7})(\d{2})(\d{4})(\d)(\d{2})(\d{4})

通过在每个间隔周围放置捕获组,可以使用
gsub
在匹配之间插入值

gsub(
“(\\d{7})(\\d{2})(\\d{4})(\\d)(\\d{2})(\\d{4})”,
"\\1-\\2,\\3,\\4,\\5,\\6", 
"000001001520081000000", 
perl=TRUE
)

[1]“0000010-015200,8,1000000”
tmp
print
调用在这里实际上没有任何作用,它是多余的。@KonradRudolph I。。。我不知道。编辑相应的答案!
print
调用实际上在这里什么都不做,它是多余的。@KonradRudolph I。。。我不知道。编辑相应的答案!
tmp <- as.character("000001001520081000000")
tmp2 <- paste0(substr(tmp, 1, 8),
               "-",
               substr(tmp, 9, 10),
               ".",
               substr(tmp, 11, 14),
               ".",
               substr(tmp, 15, 15),
               ".",
               substr(tmp, 16, 17),
               ".",
               substr(tmp, 18, nchar(tmp)))
tmp2