在字符之间插入定界符
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"
这种方法是匹配和连续捕获每一对字符,前提是这对字符后面至少有一个字符。然后,我们用这两个捕获的字符替换,后跟一个下划线。否定前瞻 (?!$)
确保我们不会在最后一个或最后一对字符后添加下划线。
我有一个字符列的数据框,我想在其中每 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"
这种方法是匹配和连续捕获每一对字符,前提是这对字符后面至少有一个字符。然后,我们用这两个捕获的字符替换,后跟一个下划线。否定前瞻 (?!$)
确保我们不会在最后一个或最后一对字符后添加下划线。