【问题标题】:Insert delimiter between characters在字符之间插入分隔符
【发布时间】:2018-12-07 01:05:42
【问题描述】:

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

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

【问题讨论】:

    标签: r regex string gsub


    【解决方案1】:

    这是一个使用gsub的选项:

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

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

    【讨论】: