我有一个非常简单的问题,用新字符串替换第二次出现的字符串。
假设我们有这个字符串
string <- c("A12A32")
我们希望将第二个A
替换为B
字符串。 A12B32
是预期的输出。
关注此相关帖子 How to replace second or more occurrences of a dot from a column name
我试过了,
replace_second_A <- sub("(\\A)\\A","\\1B", string)
print(replace_second_A)
[1] "A12A32"
第二个A
为什么似乎没有变化?
答案 0 :(得分:3)
请注意。*?匹配最短的字符串直到下一个A:
string <- "A12A32"
sub("(A.*?)A", "\\1B", string)
## [1] "A12B32"
答案 1 :(得分:2)
首先,不需要使用反斜杠转义A
字母。它们只需要转义具有其他含义的特殊字符例如“。”意思是“任何角色”,“\\。”意思是“时期”。
其次,你的正则表达式“(\\ A)\\ A”读取“匹配A后跟另一个A,保留第一个A以供重用。”您没有两个连续的“A”,它们用数字分隔。
这样可行(“\\ d +”表示“匹配1位或更多位数”):
sub("(A\\d+)A","\\1B", "A12A32")
[1] "A12B32"