R中正则表达式的负向后看

时间:2019-10-22 03:53:23

标签: r regex

我有以下向量:

vector_3 <- c("oh me oh my", "hello", "oleo", "how ostensible")

我想知道哪个元素包含e之前的h

我尝试过

grep("(?<!h).*e", vector_3, perl = T)

但这没用。代码应该返回3,因为第三个元素是唯一包含e且前面没有h的元素。

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

grep("^[^h]*e", vector_3, perl = TRUE)
#[1] 3

您的第一个问题是.*可以包含“ h”。可以通过negated character class来解决。如果使用它,则不需要后面的内容。

您还需要字符串锚开头。否则,每个“ e”都将是一个匹配项。