在字符之间插入定界符

Insert delimiter between characters

我有一个字符列的数据框,我想在其中每 2 个字符后插入一个分隔符。字符列的长度是可变的。这是它的样子

id      character
1        aaabdg
2        bjdbjhdj
3        bjbkjekkechj
4        jkfb

我想要的输出数据框如下

id      character
1        aa_ab_dg
2        bj_db_jh_dj
3        bj_bk_je_kk_ec_hj
4        jk_fb

我一直在尝试创建正则表达式以在下面的代码中使用,但还没有找到任何运气。

cat(paste0('[a-z]{2}', paste(str1, collapse="", ""), '[a-z]{2}'))

gsub("([a-z])", "\,", str1)

任何 help/suggestions 将不胜感激

这是一个使用 gsub 的选项:

gsub("(..)(?!$)", "\1_", "bjbkjekkechj", perl=TRUE)

[1] "bj_bk_je_kk_ec_hj"

这种方法是匹配连续捕获每一对字符,前提是这对字符后面至少有一个字符。然后,我们用这两个捕获的字符替换,后跟一个下划线。否定前瞻 (?!$) 确保我们不会在最后一个或最后一对字符后添加下划线。