R:在字符串中将字符更改为与前一个字符相同。

4
假设我有一个向量c('JKA1','BP9C','SSTQ3WA'),我想将数字前面的字符更改为该数字本身,以便R返回'JK11' 'B99C' 'SST33WA'。是否可以使用正则表达式来实现这一点,还是应该使用R之外的其他内容?
1个回答

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"

1
另一个 sub("[A-Z](?=(\\d))", "\\1", x, perl=T) - Avinash Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接