R中的正则表达式:如何排除包含某些特定数值(长度> 1)的字符串?

时间:2018-07-27 16:49:04

标签: r regex

我在R中有一个字符串向量:

mystrings <- c("S0701",   "S0702",   "S0703",   "S0704",   "S0705",   "S0706",   "S0707",   "S0708",   "S0709",   "S0710",   "S0711",   "S0712",  
       "S0713",   "S0714",   "S07_oth") 

我想使用正则表达式排除最后3个字符串。 我尝试过:

grep("S07[^oth|13]*$", mystrings, value = TRUE)

但是这会消除所有包含10、11、12、13和14的字符串。 这些也不起作用:

grep("S07[^oth | (13|14))]*$", total, value = TRUE)
grep("S07[^(oth | 13 | 14)]*$", total, value = TRUE) 
grep("S07[^(oth | (13) | (14))]*$", total, value = TRUE) 
grep("S07[^oth | [1-1][3-4])*$", mystrings, value = TRUE)

谢谢您的帮助!

1 个答案:

答案 0 :(得分:6)

您几乎拥有它:

grep("oth|1[34]", mystrings, value = TRUE, invert = TRUE)

"S0701" "S0702" "S0703" "S0704" "S0705" "S0706" "S0707" "S0708" "S0709" "S0710" "S0711"
"S0712"