假设我有一个向量
c('JKA1','BP9C','SSTQ3WA')
,我想将数字前面的字符更改为该数字本身,以便R返回'JK11' 'B99C' 'SST33WA'
。是否可以使用正则表达式来实现这一点,还是应该使用R之外的其他内容?匹配数字前面的字母,然后通过捕获组捕获数字。然后用\\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"
sub("[A-Z](?=(\\d))", "\\1", x, perl=T)
- Avinash Raj