1

我有以下代码和结果:

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

regexpr 只返回第一次出现的“D”,我怎样才能让它返回所有出现的“D”

4

3 回答 3

2

你是如此接近 - 从帮助文件中只剩下几行regexpr......

gregexpr("D", x)
# [[1]]
# [1] 4 8
# attr(,"match.length")
# [1] 1 1
# attr(,"useBytes")
# [1] TRUE
于 2012-07-12T06:00:47.153 回答
1

您也可以像这样使用 strsplit :

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

这样,您也可以完全匹配 D。

于 2012-07-12T08:15:19.517 回答
0

我相信会有一个纯粹的 regex方法。不过stringr::str_locate_all就够了

library(stringr)

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

## [1] 4  8
于 2012-07-12T05:53:08.047 回答