test <- c("SPA100", "MSA200", "MSB300", "MSC400", "MSC500",
"PRA100", "PRC200", "MGV100", "MTJ400", "MTK500")
Posso obter facilmente os valores iniciados com a sequência "MS":
grep("^MS", test, val=T)
# [1] "MSA200" "MSB300" "MSC400" "MSC500"
Uma primeira tentativa, sem sucesso, para obter linhas que não iniciam com a sequência foi:
grep("^!(MS)", test, val=T)
# character(0)
Consegui uma solução estranha com:
grep("^[^M]|^M[^S]", test, val=T)
# [1] "SPA100" "PRA100" "PRC200" "MGV100" "MTJ400" "MTK500"
Mas essa solução é limitada quando usando strings maiores, tal como "MSC".
Embora existam alternativas como:
test[-grep("^MSC", test)]
# [1] "SPA100" "MSA200" "MSB300" "PRA100" "PRC200" "MGV100" "MTJ400" "MTK500"
Gostaria de saber se há uma forma fácil de fazer isso usando diretamente uma regexp.