使用正则表达式替换字符串的最后一次出现(并且仅替换它)

Rti*_*ist 7 regex r

我有一个字符串,比方说MyString ="aabbccawww".我想使用gsub表达式将MyString中的最后一个"a"替换为"A",并且仅使用它.那就是"aabbccAwww".我在网站上发现了类似的问题,但他们都要求更换最后一次出现以及之后的所有内容.我尝试过gsub("a [^ a]*$","A",MyString),但它给出了"aabbccA".我知道我可以为此目的使用stringi函数,但我需要在代码的一部分中实现解决方案,其中使用这样的函数会很复杂,所以我想使用正则表达式.有什么建议吗?

akr*_*run 7

我们可以使用sub匹配“ a”后跟零个或多个不是“ a” 的字符(),将其[^a]*捕获为组((...)),直到字符串($)的末尾,然后将其替换为“ A”,然后再反向引用捕获的组(\\1

sub("a([^a]*)$", "A\\1", MyString)
#[1] "aabbccAwww"
Run Code Online (Sandbox Code Playgroud)


Sot*_*tos 6

您可以使用stringi库来轻松处理字符串,即

library(stringi)

x <- "aabbccawww"
stri_replace_last_fixed(x, 'a', 'A')
#[1] "aabbccAwww"
Run Code Online (Sandbox Code Playgroud)