我希望这个问题是合适的。
如果我有一个字符串:
> x <- "ABCDDDDDABC"
如果我使用regexpr它会返回第一个匹配的位置(和长度),而如果我使用gregexpr它返回所有匹配的位置和长度。
> regexpr("ABC",x)
[1] 1
attr(,"match.length")
[1] 3
attr(,"useBytes")
[1] TRUE
> gregexpr("ABC",x)
[[1]]
[1] 1 9
attr(,"match.length")
[1] 3 3
attr(,"useBytes")
[1] TRUE
我想做的只是找到最后一个ABC的位置,我不关心它之前的任何一个。 我想要的输出必须是:
[1] 9
attr(,"match.length")
[1] 3
attr(,"useBytes")
[1] TRUE
仅返回最后一个ABC的位置。有没有一种简单的方法可以做到这一点,也许使用我不知道的通配符?我已经在论坛和网上查看过,但我找不到通用的解决方案。
重要说明:我不希望正则表达式考虑到此特定字符串的ABC周围的上下文。我想要的东西能让我获得每个字符串的最后一个ABC的位置。我可以用它来提供它。
答案 0 :(得分:1)
我们可以使用stringi
library(stringi)
as.vector(stri_locate_last_regex(x, "ABC")[,1])
#[1] 9