Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Insert delimiter between characters

Tags:

string

regex

r

gsub

I have a data frame of character column in which I want to insert a delimiter after every 2 characters. The character column is variable in the length. This is how it looks like

id      character
1        aaabdg
2        bjdbjhdj
3        bjbkjekkechj
4        jkfb

the output data frame I want is as below

id      character
1        aa_ab_dg
2        bj_db_jh_dj
3        bj_bk_je_kk_ec_hj
4        jk_fb

I have been trying to create regex to use in the below code but have not found any luck yet.

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

and

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

Any help/suggestions would be much appreciated

like image 433
Tushar Mehta Avatar asked Aug 30 '26 11:08

Tushar Mehta


1 Answers

Here is one option using gsub:

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

[1] "bj_bk_je_kk_ec_hj"

This approach is to match and capture every pair of characters in succession, provided that there be at least one character following the pair. Then, we replace with those two captured characters, followed by an underscore. The negative lookahead (?!$) ensures that we do not add an underscore after the very last single or pair of characters.

like image 125
Tim Biegeleisen Avatar answered Sep 02 '26 05:09

Tim Biegeleisen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!