Existe uma maneira de especificar usando regex para mostrar resultados que não contêm texto específico. Algo semelhante a
Selecione * da tabela onde o id não está em {3,4,6};
Respostas:
1 para resposta № 1[^ 346] - qualquer caractere, exceto 3,4,6. É isso que você perguntou?
0 para resposta № 2
Que tal simplesmente procurar o texto e usar o operador not no resultado?
List<String> list = ...
list = list.stream()
.filter(string -> !string.matches("[346]")) // note the !
.collect(Collectors.toList());
0 para resposta № 3
Seguindo seu exemplo, considere este código:
Stream.of("13","11","3","33","3a")
.filter(s -> s.matches("(?!3$|4$|6$)\d+"))
.forEach(System.out::println);
Ele selecionará apenas as strings que são dígitos puros, mas não correspondem a "3", "4" ou "6".
A principal característica da expressão regular é
(?!3$|4$|6$)
Esta é a antevisão negativa e corresponde às sequências exatas "3", "4" e "6". Uma vez que é negativo, toda a expressão corresponde quando esta parte não corresponde.