str_replace A1-A9到A01-A09等

Ale*_*der 10 regex r str-replace dataframe

嗨我的数据中有以下字符串,并希望将A1-A9替换为A01-A09,将B1-B9替换为B01-B09,但保留数字>=10.

rep_data=data.frame(Str= c("A1B10", "A2B3", "A11B1", "A5B10"))

    Str
1 A1B10
2  A2B3
3 A11B1
4 A5B10
Run Code Online (Sandbox Code Playgroud)

这里有一个类似的帖子,但我的问题有点不同!并且在这里str_replace没有看到类似的例子.

如果您知道解决方案,将会非常高兴.

预期产出

Str
1 A01B10
2 A02B03
3 A11B01
4 A05B10
Run Code Online (Sandbox Code Playgroud)

Mik*_* H. 6

我想这应该能满足你的需求:

gsub("(?<![0-9])([0-9])(?![0-9])", "0\\1", rep_data$Str, perl = TRUE)
#[1] "A01B10" "A02B03" "A11B01" "A05B10"
Run Code Online (Sandbox Code Playgroud)

它使用PCRE lookahead的/ lookbehind来匹配1位数字,然后在其上粘贴"0".