正则表达式匹配以字母结尾的字符串,但不以R中的短语结尾

时间:2014-06-04 11:37:27

标签: regex r inverse-match

我需要使用grep查找以G结尾的所有字符串,但不能在以下字符向量中以STIGVÄG结尾:

test=c("EWASPG","AVOPW","SDAGSTIG","ASDVVÄG","ASDVWE","QSCIUVG","QWSFNJG")

我试过这个但是对于{{1}前面带有字母STIVÄ的字符串,它返回false当G前面有完整的词组时,而不是返回false。

G

谢谢!

我知道this post

1 个答案:

答案 0 :(得分:4)

character class始终与单个字符匹配,因此[^(STI)]将匹配除(STI之外的任何字符或)

您可以使用negative lookbehind assertion来确保字符串不以某个子字符串结尾,但您需要在R中启用与Perl兼容的正则表达式模式:

grep("(?<!STI|VÄ)G$", test, perl=TRUE, value=TRUE);

测试live on regex101.com