R:更改为与字符串中前一个字符相同的字符

时间:2015-03-27 06:58:33

标签: regex r char

假设我有一个向量c('JKA1','BP9C','SSTQ3WA'),我想将数字前面的字符更改为该数字,以便R返回'JK11' 'B99C' 'SST33WA'。无论如何使用正则表达式进行此操作还是我最好使用除R之外的其他内容?

1 个答案:

答案 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"