假设我有一个向量c('JKA1','BP9C','SSTQ3WA')
,我想将数字前面的字符更改为该数字,以便R返回'JK11' 'B99C' 'SST33WA'
。无论如何使用正则表达式进行此操作还是我最好使用除R之外的其他内容?
答案 0 :(得分:7)
匹配数字前的字母,然后通过捕获组捕获数字。然后用\\1\\1
替换匹配的字符表示组索引1中存在双倍字符。
> x <- c('JKA1','BP9C','SSTQ3WA')
> gsub("[A-Za-z](\\d)", "\\1\\1", x)
[1] "JK11" "B99C" "SST33WA"
sub
功能对于这种情况就足够了。
> sub("[A-Z](\\d)", "\\1\\1", x)
[1] "JK11" "B99C" "SST33WA"