Регулярное выражение для соответствия строке, заканчивающейся буквой, но НЕ заканчивающейся фразой в R
Мне нужно использовать grep
найти все строки, заканчивающиеся на G
но НЕ заканчивается STIG
или же VÄG
в следующем символьном векторе:
test=c("EWASPG","AVOPW","SDAGSTIG","ASDVVÄG","ASDVWE","QSCIUVG","QWSFNJG")
Я пробовал это, но он возвращает false для любой строки с буквами S
, T
, I
, V
, Ä
предшествующий G
вместо возврата ложного, когда G
предшествует точная фраза.
grep("[^((STI)|(VÄ))]G$", test, value=T)
# [1] "EWASPG" "QWSFNJG"
Спасибо!
Я в курсе этого поста.
1 ответ
Класс символов всегда соответствует одному символу, поэтому [^(STI)]
будет соответствовать любому символу, кроме (
, S
, T
, I
или же )
,
Вы можете использовать отрицательное утверждение, чтобы убедиться, что строка не заканчивается определенной подстрокой, но вам нужно включить Perl-совместимый режим регулярных выражений в R:
grep("(?<!STI|VÄ)G$", test, perl=TRUE, value=TRUE);
Проверьте это в прямом эфире на regex101.com.