我想在字符串中插入一次,两次或三次冒号字符。例如,我想要
G*2413 => G*24:13
G*15122 => G*15:122
G*010101 => G*01:01:01
G*02010102 => G*02:01:01:02
如何使用R?
执行此操作have <- c('G*2413', 'G*15122', 'G*010101', 'G*02010102')
want <- c('G*24:13', 'G*15:122', 'G*01:01:01', 'G*02:01:01:02')
答案 0 :(得分:2)
您可以使用(\\d{2}(?!\\d?$))
尝试gsub
,将每两位数字替换为自身后跟一个冒号字符,除了它后跟字符串的结尾或后跟字符串末尾的一位数字。 ?!
是负向预测语法,可确保匹配的模式不会跟随另一种模式:
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*02010102", perl=T)
# [1] "G*02:01:01:02"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*010101", perl=T)
# [1] "G*01:01:01"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*15122", perl=T)
# [1] "G*15:122"
gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*2413", perl=T)
# [1] "G*24:13"
答案 1 :(得分:1)
我们也可以使用积极的外观
gsub("(\\d{2})(?=\\d{2})", "\\1:", have, perl = TRUE)
#[1] "G*24:13" "G*15:122" "G*01:01:01" "G*02:01:01:02"