Отрицательный взгляд за регулярным выражением в R - PullRequest
1 голос
/ 22 октября 2019

У меня есть следующий вектор:

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

Я хочу знать, какой элемент содержит e, которому не предшествует h.

Я пытался

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

но это не сработало. Код должен возвращать 3, поскольку третий элемент является единственным элементом, который содержит e, которому не предшествует h.

Что я делаю не так?

1 Ответ

3 голосов
/ 22 октября 2019
grep("^[^h]*e", vector_3, perl = TRUE)
#[1] 3

Ваша первая проблема заключается в том, что .* может содержать «h». Это можно исправить с помощью отрицательного класса символов . Если вы используете это, вам не нужен внешний вид.

Вам также нужно начать привязку строки. В противном случае каждое «е» будет совпадением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...