在字符之间插入定界符

时间:2018-12-07 01:05:42

标签: r regex string gsub

我有一个字符列的数据框,我想在其中每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)

任何帮助/建议将不胜感激

1 个答案:

答案 0 :(得分:3)

以下是使用gsub的一种选择:

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

[1] "bj_bk_je_kk_ec_hj"

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