使用regexpr查找R中最后一场比赛的位置

时间:2017-05-13 12:16:31

标签: r regex bioinformatics

我希望这个问题是合适的。

如果我有一个字符串:

> 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的位置。我可以用它来提供它。

1 个答案:

答案 0 :(得分:1)

我们可以使用stringi

中的便捷功能
library(stringi)
as.vector(stri_locate_last_regex(x, "ABC")[,1])
#[1] 9