我有一个字符串,假设mystring =" aabbccawww"。我想使用gsub表达式替换" a",和仅的mystring中的最后一个" a"。那就是" aabbccawww"。我在网站上发现了类似的问题,但是他们都要求取代最后一次发生和随后的一切。我尝试过GSUB(" a [^a]*$"," a",mystring),但它给出了" aabbcca"。我知道我可以将Stringi函数用于此目的,但是我需要在代码的一部分中实现的解决方案,在该代码的一部分中,使用此类函数会很复杂,因此我想使用正则表达式。有任何建议吗?
您可以使用stringi
库,使字符串变得非常容易,即
library(stringi)
x <- "aabbccawww"
stri_replace_last_fixed(x, 'a', 'A')
#[1] "aabbccAwww"
我们可以使用 sub
匹配'a',然后是不是'a''( [^a]*
)的零或更多字符,将其捕获为组( (...)
),直到字符串结束($
)并用" A"替换为捕获组(\1
)
sub("a([^a]*)$", "A\1", MyString)
#[1] "aabbccAwww"
虽然Akrun的答案应该解决问题(不确定,尚未使用1
等),但您也可以使用LOOCOUTS:
a(?!(.|n)*a)
这基本上是说:找到一个不遵循任何数量字符和a
的a
。(?!x)
是所谓的Lookout,这意味着搜索表达式不包含在比赛中。
您需要(.|n)
,因为.
涉及所有字符,除了销售线。
以供有关监视或其他正则言论的参考,我可以推荐http://regexr.com/。