/ / Existe uma maneira de especificar o uso de regex para mostrar resultados que não contêm texto específico [duplicado] - java, regex

Existe uma maneira de especificar o uso de regex para mostrar resultados que não contêm texto específico [duplicado] - java, regex

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.