R 中的正则表达式与异常 (grep)

Joh*_*nes 1 regex r

使用R我想从字符串向量中获取以 结尾的所有字符串,_XXX除了那些前面有“Total”一词的字符串_XXX

mystringvector <- c("str1_XXX","str2_XXY","str3_XXX","Total_XXX")
grep("*_XXX",mystringvector,value=TRUE)
Run Code Online (Sandbox Code Playgroud)

结果应该只返回str1_XXXstr3_XXX。但我怎样才能包含Total_.

Cat*_*ath 5

您可以使用前瞻,打开perl选项来精确确定您不希望_XXX前面出现Total

grep("(?<!Total)_XXX", mystringvector, value=TRUE, perl=TRUE) 
# [1] "str1_XXX" "str3_XXX"
Run Code Online (Sandbox Code Playgroud)

?<意思是“之前的必须是”并!否定之后的内容(此处为“总计”)。