获取R中字符串中所有字符元素匹配的索引

时间:2014-07-01 10:49:52

标签: regex string r grep indices

我希望得到某些单词中character元素的所有出现的索引。假设我查找的这些character元素包括:leaz

我在grep函数及其数十次修改中尝试了以下正则表达式,但我一直没有收到我想要的内容。

grep("/([leazoscnz]{1})/", "ylaf", value = F)

给了我

numeric(0)

我想要的地方:

[1] 2 3 

1 个答案:

答案 0 :(得分:2)

要使用grep处理字符串的单个字符,首先需要将字符串拆分为单独的字符向量。您可以使用strsplit

strsplit("ylaf", split="")[[1]]
[1] "y" "l" "a" "f"

接下来,您需要简化正则表达式,然后再次尝试grep

strsplit("ylaf", split="")[[1]]
grep("[leazoscnz]", strsplit("ylaf", split="")[[1]])

[1] 2 3

但使用gregexpr更容易:

gregexpr("[leazoscnz]", "ylaf")
[[1]]
[1] 2 3
attr(,"match.length")
[1] 1 1
attr(,"useBytes")
[1] TRUE