R编程:下一次出现正则表达式

时间:2012-07-12 05:36:03

标签: regex r

我有以下代码和结果:

> x <- c("ABCDE CDEFG FGHIJ")
> x
[1] "ABCDE CDEFG FGHIJ"
> regexpr("D", x)
[1] 4
attr(,"match.length")
[1] 1

regexpr只返回第一次出现的&#34; D&#34;,如何让它返回所有出现的&#34; D&#34;

3 个答案:

答案 0 :(得分:2)

你是如此接近 - 只是在帮助文件中regexpr的几行......

gregexpr("D", x)
# [[1]]
# [1] 4 8
# attr(,"match.length")
# [1] 1 1
# attr(,"useBytes")
# [1] TRUE

答案 1 :(得分:1)

你也可以像这样使用strsplit:

which(unlist(strsplit(x,split=""))=="D")
[1] 4 8

这样你也可以与D完全匹配。

答案 2 :(得分:0)

我确信会有一种纯粹的regex方法。但是stringr::str_locate_all就足够了

library(stringr)

unique(unlist(str_locate_all(x, 'D')))

## [1] 4  8